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 ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
preg_match_all使用心得分享
Jan 31 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
php关联数组快速排序的方法
Apr 17 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
详解Python中with语句的用法
2015/04/15 Python
python实现数据写入excel表格
2018/03/25 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
商场消防管理制度
2014/01/12 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
英文请假条
2014/04/11 职场文书
家庭贫困证明
2014/09/23 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
格林童话读书笔记
2015/06/30 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python