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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
用php实现选择排序的解决方法
May 04 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP的自定义模板引擎
Mar 24 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP自定义错误处理的方法分析
Dec 19 PHP
php+ajax实现商品对比功能示例
Apr 13 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中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
node.js通过url读取文件
2020/10/16 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python中的五种异常处理机制介绍
2014/09/02 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python如何将装饰器定义为类
2020/07/30 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
期终自我鉴定
2014/02/17 职场文书
委托书怎样写
2014/08/30 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
妇产科护理心得体会
2016/01/22 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS