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个人网站架设连环讲(四)
Oct 09 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
一个简单且很好用的php分页类
Oct 26 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
Chrome Web App开发小结
Sep 04 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
Laravel解决nesting level错误和隐藏index.php的问题
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
中国的第一台收音机
2021/03/01 无线电
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python 串行执行和并行执行实例
2020/04/30 Python
python语言中有算法吗
2020/06/16 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
优秀少先队工作者事迹材料
2014/05/13 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
房产公证委托书范本
2014/09/20 职场文书
玄武湖导游词
2015/02/05 职场文书
承诺书范本大全
2015/05/04 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
python四种出行路线规划的实现
2021/06/23 Python
Golang 入门 之url 包
2022/05/04 Golang