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


Posted in PHP onNovember 25, 2014

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

1,项目目录结构分析

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

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

2,Yii入口文件分析

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

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

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

'name'=>'My Web Application',

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

Yii::app()->name;

3,Yii路由设置

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入门教程之目录结构、入口文件及路由设置

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PHP 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
PHP5函数小全(分享)
Jun 06 PHP
解析strtr函数的效率问题
Jun 26 PHP
利用谷歌 Translate API制作自己的翻译脚本
Jun 04 PHP
浅析php原型模式
Nov 25 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
Yii入门教程之Yii安装及hello world
Nov 25 #PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 #PHP
浅析php适配器模式(Adapter)
Nov 25 #PHP
浅析php原型模式
Nov 25 #PHP
浅析php创建者模式
Nov 25 #PHP
浅析php工厂模式
Nov 25 #PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 #PHP
You might like
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP pear安装配置教程
2016/05/14 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
python基于pyDes库实现des加密的方法
2017/04/29 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
10条PHP编程习惯
2014/05/26 面试题
关于圣诞节的广播稿
2014/01/26 职场文书
个人查摆剖析材料
2014/02/04 职场文书
财务内勤岗位职责
2014/04/17 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
股指期货心得体会
2014/09/10 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
党建工作整改措施
2014/10/28 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript