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 相关文章推荐
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 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读取超大文件的实例代码
2012/04/01 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python实现把xml或xsl转换为html格式
2015/04/08 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
电话客服专员岗位职责
2014/06/28 职场文书
购房委托书范本
2014/09/18 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2014公司年终工作总结
2014/12/19 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android