Yii入门教程之目录结构、入口文件及路由设置

项目名称从“FantaCMS”修改成为“testyii”—————— 俗!

1,项目目录结构分析

2,Yii入口文件分析

在Yii启动项目时,传递了项目主配置文件数组,那么Yii会在整个应用中绑定一个全局的Yii对象并且可以通过如下方法来调用该对象:Yii::app()

Yii系统把配置文件中的数组值,通过键值对的形式绑定到了该对象上,例如在配置文件中我们配置了:

'name'=>'My Web Application',

那么我们在项目的任何一个地方通过该对象的属性就可以获取到“name”的值,方法为:

Yii::app()->name;

3,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应用中,每个控制器都要继承自公共控制器“Controller”

然后打开“Controller”控制器文件:Controller.php,它位于:protected/components  目录下

“Controller”控制器代码截图如下:

Yii通过:public $layout='//layouts/column1'; 来指定动作方法的公共模板文件

公共模板文件位于:protected/views/layouts 目录下,如下图:

现在我们来创建我们的模板文件:testlayout.php,代码如下:

其中”<?php echo $content; ?>“为Yii中规定的模板文件中的内容替换方法

然后,修改 ”Controller“控制器中的模板文件为:public $layout='//layouts/testlayout';

然后访问:http://localhost/testyii/index.php?r=site/index    结果如图:

然后我们发现,模板文件已经变成我们自己指定的了,然后假如你不需要视图文件渲染模板文件,那么你可以在动作方法中调用视图文件的时候使用:$this->renderPartial  方法

或者你整个项目都不需要调用模板文件,那么你可以在动作方法中调用视图文件时全部用:$this->renderPartial

也或者将视图模板文件设置为”空“,例如:public $layout='';

下一节继续:Yii的魔术师:gii,Yii模块及模块自定义

(0)

相关推荐

  • Yii2-GridView 中让关联字段带搜索和排序功能示例

    情境要求: 要在订单(Order)视图的gridview中显示出客户(Customer)姓名,并使其具有与其它字段相同的排序和搜索功能. 数据库结构 订单表order含有字段customer_id 与 客户表customer的id字段关联 首先确保在Order Model中包含以下代码: public function getCustomer() { return $this->hasOne(Customer::className(), ['id' => 'customer_id']); }

  • Yii使用smsto短信接口的函数demo示例

    本文实例讲述了Yii使用smsto短信接口的函数.分享给大家供大家参考,具体如下: public function smsto($telphone,$message) { //短信接口用户名 $uid,如果没有或不能发送请与客服联系 $uid = 'zyd'; //短信接口密码 $passwd $passwd = '123456'; //发送到的目标手机号码 $telphone $telphone = $telphone;//此处改成自己的手机号 //短信内容 $message $message

  • Yii CDBCriteria常用方法实例小结

    本文实例讲述了Yii CDBCriteria常用方法.分享给大家供大家参考,具体如下: 注:$c = new CDbCriteria();是ActiveRecord的一种写法,使ActiveRecord更加灵活,而不是手册中DAO(PDO)和Query Builder. 小小点评一下:感觉这部分手册做的一般. 链接地址:http://www.yiiframework.com/doc/api/1.1/CDbCriteria 这是Yii CDbCriteria的一些笔记和常用用法: 一.一个sql拼

  • YII2 实现多语言配置的方法分享

    前言: 由于我的YII2版本是2.0.7, 设置多语言时和其他教程有不同的地方, 所以想着整理下,方便自己以后需要的时候和有需要的朋友参考学习.下面来一起学习学习吧. 方法如下: 1. 在一个controller里面写一个调用i18n的语句, 比如actionIndex echo \Yii::t('app', 'whatisthis'); 现在进入这个页面, 页面输出whatisthis 2. 手动创建一个文件夹messages来存放多语言相关文件, 如果是advanced版本则在fronten

  • Yii操作数据库的3种方法

    一.执行原生太SQL的PDO方式. 复制代码 代码如下: $sql = "";//原生态sql语句 xx::model()->dbConnection->createCommand($sql)->execute(); 二.Active Record方式 (1)New 方式 复制代码 代码如下: $post=new Post; $post->title='sample post'; $post->content='post body content'; $p

  • yii的CURD操作实例详解

    本文实例讲述了yii的CURD操作技巧.分享给大家供大家参考.具体分析如下: CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD.它代表创建(Create).更新(Update).读取(Retrieve)和删除(Delete)操作.本文来讲讲Yii框架的CURD操作. 一.查询数据集合 1. 复制代码 代码如下: $admin=Admin::model()->findAll($condition,$params); 该方法是根据一个 条件查询一个集合,如: 复制代

  • yii2高级应用之自定义组件实现全局使用图片上传功能的方法

    本文讲述了yii2高级应用之自定义组件实现全局使用图片上传功能的方法.分享给大家供大家参考,具体如下: 此例为yii2高组应用,这里只提供一个简单的事例 在yii2中,在使用到上传图片时有自带的一个上传图片类,但不太好用. 其中有一种方式,把自己写的一个上传图片类文件,注册成一个组件,在全局中使用.(我记得我在里面有写过一篇小物件的使用) 这里,我只作一个简单的自定义组件介绍 1.在backend(或frontend)定义一个 upload.php(注意路径: backend/component

  • Yii2实现增删改查后留在当前页的方法详解

    前言 实现增删改查操作成功后仍留在当前页,能给用户一个良好的体验.但是 Yii2 框架本身是没有在增删改查操作成功后仍留在当前页的效果的,要实现这样的一个效果得自己写.我的原则是不动核心代码,始终坚持自己的原则,现实现了我把它分享出来.殊途同归,如有更好的实现方法,欢迎交流. 需求分析 一.实现增删改查后操作成功后仍然留在当前页面. 1.链接的效果图 封装代码 共有两个文件ActionColumn.php和Helper.php1.ActionColumn.php文件 <?php use Clos

  • 解析yii数据库的增删查改

    1. 存取数据库方法存储第一种存表时候用到例子: 复制代码 代码如下: $post=new Post;$post->title='samplepost';$post->content='content for thesample post';$post->createTime=time();/$post->createTime=newCDbexpression_r('NOW()');$post->save();$user_field_data= new user_field_

  • Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析

    本文实例讲述了Yii2中设置与获取别名的函数(setAlias和getAlias)用法.分享给大家供大家参考,具体如下: 首先说说什么是别名. 在Yii中有很多的路径,在开发的过程当前我们也会使用一些路径.一般来说都需要使用绝对路径,但绝对路径都很长. 所以,为了方便的使用路径,可以在Yi中i给每个路径起个名称,这个名称就是别名. 别名的格式: 别名必须以"@"字符开头,别名中还可以包含"/".如("@www"为根别名,"@www/te

  • Yii全局函数用法示例

    本文实例讲述了Yii全局函数用法.分享给大家供大家参考,具体如下: 由于YII致力于完美的整合第三方库,它并没有定义任何全局函数.yii中的每一个应用都需要全类别和对象范围. 例如,Yii::app()->user;Yii::app()->params['name'];等等.我们可以自行设定全局函数,使得代码看起来更加简洁易用. 我们可以保存在globals.php在protected/config目录下.然后,在入口脚本index.php中,定义如下内容: $globals=dirname(

  • yii使用bootstrap分页样式的实例

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成.Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目. 本文为大家介绍的是yii使用bootstrap分页样式方法,感兴

随机推荐