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 相关文章推荐
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php去除重复字的实现代码
Sep 16 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php截取中文字符串函数实例
Feb 23 PHP
PHP使用递归生成文章树
Apr 21 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 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开发工具有哪五款
2015/11/09 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
Node 代理访问的实现
2019/09/19 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
python输出指定月份日历的方法
2015/04/23 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python调用c++传递数组的实例
2019/02/13 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
浅谈Python中的字符串
2020/06/10 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
研讨会主持词
2014/04/02 职场文书
三好学生个人总结
2015/02/15 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers