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中使用XML
Oct 09 PHP
PHP 数字左侧自动补0
Mar 31 PHP
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
PHP 文件上传全攻略
Apr 28 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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
zend framework重定向方法小结
2016/05/28 PHP
jQuery参数列表集合
2011/04/06 Javascript
Javascript实现字数统计
2015/07/03 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python设置检查点简单实现代码
2014/07/01 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python字节单位转换实例
2019/12/05 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
优秀的教师个人的中文求职信
2013/09/21 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
法人代表任命书范本
2014/06/05 职场文书
会议接待欢迎标语
2014/10/08 职场文书
初中家长评语大全
2014/12/26 职场文书
经营目标责任书
2015/05/08 职场文书
JS实现简单九宫格抽奖
2022/06/28 Javascript