Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数
这几天了解了一下Yii框架,以简单的博客项目实战入门。大致的实现流程做个记录。
一、Yii 安装与环境检测
从 www.yiiframework.com 获取一份Yii的拷贝,解压到 /wwwroot/yii 目录。
打开浏览器访问 http://127.0.0.1/yii/requirements/index.php,检测本地环境支持。
二、建立项目与目录介绍
在命令行环境,cd命令进入到 Yii 框架核心目录 /wwwroot/yii/framework ,键入命令行: php yiic webapp ../blog (注意:确保php.exe的路径配置到环境变量)
回车后,得到一条确认提示,yes 确定即可。这时在 yii 目录下有了blog 目录,结构如下:

assets: 公共资源目录,存放JS,CSS,图片资源等等
protected:书写MVC代码的主要目录
themes:主题目录
uploads:这个是我自己添加的图片上传目录
.htaccess: 用于Apache重写
index-text.php:功能测试的入口文件,没用
index.php:单入口文件
三、设置默认控制器与载入模板
1、创建控制器
class IndexController extends Controller{
public function actionIndex() {
//...
}
}
访问:index.php?r=index/index
r是 route 路由的缩写,/ 分隔 index 控制器和 index 方法
2、配置默认控制器
默认访问:控制器SiteController下面的actionIndex方法
Config/main.php是主配置文件,在其中加入:
'defaultController' => 'Index',
3、载入视图
在控制器方法中,有两个方法可以加载视图:
$this->render(); // 会加载布局文件
$this->renderPartial(); // 不会加载布局文件(也不能加载框架自带的jQuery等)
方法中传递视图文件名(YII 1.1.17 中的控制器方法名以 "action" 为前缀,比如 "actionIndex" )
在视图目录:
根据控制器名字建立文件夹,里面的文件名是 render 或者 renderPartial 方法传递的名字
例如:
控制器是 Index ,则需要建立 Index 文件夹,在 Index 文件夹下建立 index.php 文件,然后渲染视图
$this->render('index');
// 或者
$this->renderPartial('index');
四、布局介绍
1、什么是局部
在 views/layouts 下面的文件是布局文件(有每个模板的公共区域),用 render() 方法渲染视图时会自动加载的文件
修改步骤:
- views/layouts下面的,新建布局文件
- 修改默认布局文件:
位置: components/Controller.php ,基类控制器
修改属性, public $layout = '//layouts/column1';
这表示使用 protected/views/layouts/column1.php 文件作为默认的布局文件
2、布局内容
举个栗子就明白了,比如,一张 html 网页:
上面是公用头部 html:一般是顶栏,logo, 导航栏等等
中间左侧的主内容依照不同的网页有不同的内容,使用 <?php echo $content; ?>
中间右侧是侧栏 html
尾部是公用尾部 html:一般是版权信息等等
五、载入外部文件
CSS与Js等资源文件放入assets里面,按照前后台目录分开
Yii::app()->request->baseUrl;可以获取请求的基础路径
例如: <?php echo Yii:app()->request->baseUrl; ?>/assets/index/css/index.css 将得到一个纸箱前台首页的 css 文件 url
Yii::app() 返回的是在index.php入口里创建的CWebApplication实例。在一次请求处理过程中,这是唯一的实例
Yii::app() 主要负责一些全局性的功能模块。
六、分配变量并在视图中调用
1、控制器分配变量
$data = array(
'articleList' => $articleList,
'page' => $page
);
$this->render('index', $data);
2、视图中调用变量
<?php foreach($article as $v): ?>
<li><?php echo $v->title; ?></li>
<?php endforeach; ?>
七、扩展自定义函数
在protected目录下建立function.php文件
在单入口中引入,
require_once('./protected/function.php');
Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数的更多相关文章
- yii笔一----基础,安装,结构,增删改查基本操作
从yii中文站开始http://www.yiichina.com/ Yii 是一个高性能,基于组件的 PHP 框架 一. 1.安装yii方式 composer安装或者下载一份应用程序模板.刚开始学习, ...
- liunx下mysql数据库使用之三范式,关系模型设计注意项,安装目录结构
数据库的三范式第一范式===>每行记录的属性,是原子的,拆到不可拆为止.===>例如:一个人的籍贯,可以拆分为,省,市,县,乡,村 第二范式===>每行记录的非主属性(非主键属性), ...
- linux下mysql安装、目录结构、配置
1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rpm 客户端:MySQL-client-community-5.1.4 ...
- 解密Qt安装目录的结构
http://c.biancheng.net/view/3866.html 了解 Qt 安装目录的结构虽然不是编程必须的,但是它能练就我们的内功,让我们对 Qt 的编程环境了如指掌.Windows 和 ...
- 04 Apache Solr: 目录结构
通过前面的介绍,我们已经能够看到管理员界面并对Solr形成了一个感性的认识.本篇将在物理上深入了解Solr的安装目录结构和Solr示例的主目录结构. 安装目录结构 Solr 6.3.0安 ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- Ruby on Rails 目录结构
目录结构 + app/ #控制器.模型.视图.帮助方法.邮件.静态资源 + bin/ #rails脚本 + config/ #路由.数据库等 + db/ #数据库模式.迁移文件 + lib/ #扩展模 ...
- ideaIU-2019.2.exe-安装目录和设置目录结构的说明
一.查看安装目录结构 bin: 容器,执行文件和启动参数等 help:快捷键文档和其他帮助文档 jbr: 含有java运行环境 lib:idea 依赖的类库 license:各个插件许可 plugin ...
- Thinkphp3.2----------------Thinkphp3.2的目录结构介绍
ThinkPHP框架目录结构\index.php 入口文件\Application 应用目录\Public 资源文件目录\ThinkPHP 框架 ...
随机推荐
- BZOJ 3507 通配符匹配(贪心+hash或贪心+AC自动机)
首先可以对n个目标串单独进行处理. 对于每个目标串,考虑把模式串按'*'进行划分为cnt段.首尾两段一定得于原串进行匹配.剩下的cnt-2段尽量与最靠左的起点进行匹配. 对于剩下的cnt-2段.每段又 ...
- BZOJ1566:[NOI2009]管道取珠——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1566 https://www.luogu.org/problemnew/show/P1758 题目 ...
- BZOJ3932:[CQOI2015]任务查询系统——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3932 题面源于洛谷 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成 ...
- [bzoj] 2049 洞穴勘探 || LCT
原题 这是一道LCT的板子题. 至于LCT--link cut tree,也叫动态树,用splay实现动态连边的树. 预备知识: 实边:一个非叶节点,向它的儿子中的一个连一条特殊的边,称为实边;该非叶 ...
- 如何按需动态加载js文件
JavaScript无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大.这时候最好的做法就是按需引入,动态引入组件 ...
- 使用springcloud的feign调用服务时出现的错误:关于实体转换成json错误的介绍
http://blog.csdn.net/java_huashan/article/details/46428971 原因:实体中没有添加无参的构造函数 fastjson的解释: http://www ...
- 开发系统级应用不被Kill
一.设置方法 (1) 在AndroidManifest中application根节点下,添加如下代码: android:persistent="true" (2) 将应用程序pus ...
- stout代码分析之二:None类
stout库中为了避免使用NULL带来的风险,统一用None表示空. None类的实现方式如下: struct None {}; 奇怪的是, Nothing类实现方式与None一模一样..让人怀疑作者 ...
- 【题解】Matrix BZOJ 4128 矩阵求逆 离散对数 大步小步算法
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4128 大水题一道 使用大步小步算法,把数字的运算换成矩阵的运算就好了 矩阵求逆?这么基础的线 ...
- UVA11426
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=26&page ...