这几天了解了一下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 一、安装、目录结构、视图、控制器、扩展自定义函数的更多相关文章

  1. yii笔一----基础,安装,结构,增删改查基本操作

    从yii中文站开始http://www.yiichina.com/ Yii 是一个高性能,基于组件的 PHP 框架 一. 1.安装yii方式 composer安装或者下载一份应用程序模板.刚开始学习, ...

  2. liunx下mysql数据库使用之三范式,关系模型设计注意项,安装目录结构

    数据库的三范式第一范式===>每行记录的属性,是原子的,拆到不可拆为止.===>例如:一个人的籍贯,可以拆分为,省,市,县,乡,村 第二范式===>每行记录的非主属性(非主键属性), ...

  3. linux下mysql安装、目录结构、配置

    1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rpm 客户端:MySQL-client-community-5.1.4 ...

  4. 解密Qt安装目录的结构

    http://c.biancheng.net/view/3866.html 了解 Qt 安装目录的结构虽然不是编程必须的,但是它能练就我们的内功,让我们对 Qt 的编程环境了如指掌.Windows 和 ...

  5. 04 Apache Solr: 目录结构

         通过前面的介绍,我们已经能够看到管理员界面并对Solr形成了一个感性的认识.本篇将在物理上深入了解Solr的安装目录结构和Solr示例的主目录结构.   安装目录结构 Solr 6.3.0安 ...

  6. (3.1)mysql基础深入——mysql二进制与源码目录结构介绍

    (3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...

  7. Ruby on Rails 目录结构

    目录结构 + app/ #控制器.模型.视图.帮助方法.邮件.静态资源 + bin/ #rails脚本 + config/ #路由.数据库等 + db/ #数据库模式.迁移文件 + lib/ #扩展模 ...

  8. ideaIU-2019.2.exe-安装目录和设置目录结构的说明

    一.查看安装目录结构 bin: 容器,执行文件和启动参数等 help:快捷键文档和其他帮助文档 jbr: 含有java运行环境 lib:idea 依赖的类库 license:各个插件许可 plugin ...

  9. Thinkphp3.2----------------Thinkphp3.2的目录结构介绍

    ThinkPHP框架目录结构\index.php         入口文件\Application     应用目录\Public         资源文件目录\ThinkPHP         框架 ...

随机推荐

  1. 第60天:js常用访问CSS属性的方法

    一. js 常用访问CSS 属性的方法 我们访问得到css 属性,比较常用的有两种: 1. 利用点语法  box.style.width      box.style.top     点语法可以得到 ...

  2. 【bzoj2653】middle 可持久化线段树区间合并

    题目描述 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个长度为n的序列s.回答Q个这样的询问:s的左端点在[a,b]之间,右端点在[ ...

  3. 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...

  4. CSS3 边框 圆角 背景

    CSS3用于控制网页的样式布局. CSS3是最新的CSS标准.   关于transform: transform:rotate(10deg);//顺时针方向旋转10° 浏览器支持情况:低版本的IE浏览 ...

  5. javascript标准对象与包装对象

    javascript标准对象与包装对象 标准对象 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是 ...

  6. apt-key 命令

    学习参照网上教程在容器中搭建nginx时看到apt-key命令不解,记录一下.一下是 --help中的解释. apt-key命令解释: apt-key add <file> - add t ...

  7. [BZOJ5120] [2017国家集训队测试]无限之环

    Description 曾经有一款流行的游戏,叫做InfinityLoop,先来简单的介绍一下这个游戏: 游戏在一个n×m的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在方格某些方向的边界的中 ...

  8. BZOJ3156: 防御准备 【斜率优化dp】

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2207  Solved: 933 [Submit][Status][Discu ...

  9. PHP导出excel,无乱码

    php部分 header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes&qu ...

  10. python 多线程实现

    多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...