Yii入门教程之目录结构、入口文件及路由设置_php实例

项目名称从“FantaCMS”修改成为“testyii”—————— 俗!

1,项目目录结构分析

2,Yii入口文件分析

在Yii启动项目时,传递了项目主配置文件数组,那么Yii会在整个应用中绑定一个全局的Yii对象并且可以通过如下方法来调用该对象:Yii::app()

Yii系统把配置文件中的数组值,通过键值对的形式绑定到了该对象上,例如在配置文件中我们配置了:

'name'=>'My Web Application',

那么我们在项目的任何一个地方通过该对象的属性就可以获取到“name”的值,方法为:

Yii::app()->name;

3,Yii路由设置

同时应该知道:对于控制器名,Yii首先会检测当前的控制器名是否是一个“模块名”,如果是模块名则先定位到模块。

“模块”会在后面搭建项目的时候解释。

通过上面的路由访问到的就是:SiteController.php类文件下的SiteController类中的actionIndex方法

控制器文件位于:protected/controllers 目录下,也就是我们的控制器文件存放目录

注意Yii中控制器文件和动作方法名的书写方式,控制器有统一的后缀”Controller“,动作方法也有统一的前缀”action“,同时要求动作方法名的命名规范符合”除第一个单词外其它每个单词的首字母要大写“

由于Yii默认的控制器名为:site

默认的动作名为:index

因此上述通过指定控制器名动作名访问的路径和直接访问:http://localhost/testyii/   的效果是一致的

4,视图调用

在动作方法中,调用:$this->render('index');

来为对应的动作方法指定视图文件,视图文件位于:protected/views/site  目录下

其中:site为对应的控制器名文件夹,每个控制器名在视图中都应该具有一个唯一的文件夹名与其相对应

然后在动作方法中通过‘index'来指定显示的具体视图文件是site控制器下的指定的‘index.php'视图文件

另外还需要注意:

调用视图的方法有两个:

$this->render                            ----> 会调用模板文件

$this->renderPartial                   -----> 不会调用模板文件

它们之间的区别,也如上所述。

5,视图模板设置

打开SiteController.php文件,其中的代码截图如下:

我们发现:Yii应用中,每个控制器都要继承自公共控制器“Controller”

然后打开“Controller”控制器文件:Controller.php,它位于:protected/components  目录下

“Controller”控制器代码截图如下:

Yii通过:public $layout='//layouts/column1'; 来指定动作方法的公共模板文件

公共模板文件位于:protected/views/layouts 目录下,如下图:

现在我们来创建我们的模板文件:testlayout.php,代码如下:

其中”<?php echo $content; ?>“为Yii中规定的模板文件中的内容替换方法

然后,修改 ”Controller“控制器中的模板文件为:public $layout='//layouts/testlayout';

然后访问:http://localhost/testyii/index.php?r=site/index    结果如图:

然后我们发现,模板文件已经变成我们自己指定的了,然后假如你不需要视图文件渲染模板文件,那么你可以在动作方法中调用视图文件的时候使用:$this->renderPartial  方法

或者你整个项目都不需要调用模板文件,那么你可以在动作方法中调用视图文件时全部用:$this->renderPartial 

也或者将视图模板文件设置为”空“,例如:public $layout='';

下一节继续:Yii的魔术师:gii,Yii模块及模块自定义

时间: 2024-11-10 00:10:58

Yii入门教程之目录结构、入口文件及路由设置_php实例的相关文章

Phalcon入门教程之目录结构

原文发表于:Phalcon入门教程之目录结构 很多初学Phalcon的朋友,对于以Phalcon框架为基础构建的项目,应该如何组织目录结构有点摸不着头脑.比如多模块的项目中,如何共用"libs"类库和"models"目录中模型类的情况,就有很多刚接触Phalcon朋友经常在群里问这种问题. 我们在翻阅Phalcon文档的时候,会看到"教程2:INVO简介"中有一个项目结构的demo,其中总结到" Phalcon不会强求应用程序使用特定的

Swoole Framework 入门教程(3)-风骚的入口文件

看一段  GSF封装后的入口文件的代码 ,求佛祖保佑代码无bug  如此风骚.... <?php /** * _ooOoo_ * o8888888o * 88" . "88 * (| -_- |) * O\ = /O * ____/`---'\____ * . ' \\| |// `. * / \\||| : |||// \ * / _||||| -:- |||||- \ * | | \\\ - /// | | * | \_| ''\---/'' | | * \ .-\__ `-

PHP递归获取目录内所有文件的实现方法_php实例

如下所示: /** * 递归获取文件夹内所有文件 * 返回一个TREE结构的文件系统 * @param string $dir * @param array $filter * @return array $files */ function scan_dir($dir, $filter = array()){ if(!is_dir($dir))return false; $files = array_diff(scandir($dir), array('.', '..')); if(is_ar

多余目录结构的检查-多余的目录结构,文件等。

问题描述 多余的目录结构,文件等. 如何查看软件安装好之后是否生成多余的目录结构文件注册表信息快捷方式等?这句话的主要是什么意思?手机APP安装之后是否也需要检查多余的目录结构,文件,注册表信息,快捷方式等内容? 解决方案 软件安装好之后是否生成多余的目录结构文件注册表信息快捷方式等? 大概是受所谓**忧化**软件的误导所致吧, 无论是对于桌面系统,还是对于手机系统,比如,微软和谷歌的实力,应该是比那些名不见经传的小作坊强大的多,应该不存在需要小作坊替他们的系统优化的说法吧... 解决方案二:

搭建Linux开发环境及Linux目录结构及文件使用学习

下图是我们在 windows 下开"计我的电脑"看到的是一个个的盘符:   开发环境及Linux目录结构及文件使用学习-">  在 Linux 下,我们是看不到这些盘符,我们看到的是文件夹(目录):     在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Li

树型结构列出指定目录里所有文件的PHP类_php基础

<? //以树型结构列出指定目录里的所有文件,如果你想知道自己某个目录里有哪些子目录和文件,可以调用这个类来查看,很方便的.     # 演示的例子:     $t = new TreeClimber( "asp" ); //新建物件,设置需要列出的目录:在此为asp目录     echo arrayValuesToString( $t->getFileList( $t->getPath() ), "<BR>\n" );     fun

yii2.0数据库迁移教程【多个数据库同时同步数据】_php实例

本文讲述了yii2.0数据库迁移的方法.分享给大家供大家参考,具体如下: 创建迁移 使用如下命令来创建一个新的迁移: yii migrate/create <name> 必填参数 name 的作用是对新的迁移做一个简要的描述.例如,如果这个迁移是用来往多个数据库同一张表  ( 假设每个数据库都有news表 )   添加字段的,那么你可以使用addColumn_news (该名称自定义)这个名称并运行如下命令: yii migrate/create addColumn_news 注意:因为 na

Zend Framework教程之动作的基类Zend_Controller_Action详解_php实例

本文实例讲述了Zend Framework教程之动作的基类Zend_Controller_Action.分享给大家供大家参考,具体如下: Zend_Controller_Action的实现 Zend Framework的动作控制器需要继承Zend_Controller_Action,Zend_Controller_Action提供了动作控制器的基本功能,具体参考如下代码: Zend_Controller_Action_Interface <?php interface Zend_Controll

Yii列表定义与使用分页方法小结(3种方法)_php实例

本文实例讲述了Yii列表定义与使用分页方法.分享给大家供大家参考,具体如下: 方法一:控制器定义 function actionIndex(){ $criteria = new CDbCriteria(); $count=Article::model()->count($criteria); $pages=new CPagination($count); // 返回前一页 $pages->pageSize=10; $pages->applyLimit($criteria); $model