您的位置:首页 > 编程语言 > PHP开发

Yii框架开发商城(二)

2014-03-30 03:55 218 查看

接上一篇继续说Yii框架下的 shop系统开发.....
一、解决问题
1.所有的 XxxxController 都继承了 Controller 类, 但是在页面中为什么没有include 或者 require 引入 Controller.php 这个文件?这个文件是在哪引入的?
打开程序主配置文件 /shop/protected/config/main.php 查看代码

// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
),


是这个地方引入了 /shop/protected/components目录 下的 Controller.php 还有models 下的所有文件

再看下主配置文件是在哪引入的 ... 查看入口文件代码 /shop/index.php

$config=dirname(__FILE__).'/protected/config/main.php';
在 入口处有调用 main.php 主配置文件.... [ 控制器 -> 父类控制器 -> components -> main.php -> index.php ]

二、Yii 布局的实现

目前程序里的几个模板文件都是独立的,如果以后需要修改头部或者脚部代码,那就要做重复的工作,写重复的代码,所以用 “布局” 把模板中相通的部分提取出来...对代码进行优化,把相同的头部,脚部变成一份,大大减轻开发和维护的工作量...

1.布局文件路径: /shop/protected/views/layouts/

在该路径下新建布局文件 shop.php , 编写代码

<div>--我是头部--</div>

<!-- 展示首页、登录、注册等代码信息 -->
<!-- $content 代表提取出来的首页、登录、注册等页面信息,没有头部和脚部 -->
<?php echo $content; ?>

<div>--我是脚部--</div>


现在配置使用该布局,系统默认的布局文件是 column1.php 文件

到父类控制器 Controller.php 文件中修改系统默认布局文件...... 指定使用 shop.php

//public $layout='//layouts/column1';
public $layout='//layouts/shop';


问题:布局文件具体与什么有关系?

在控制器中的action方法中渲染视图时, renderPartial() 这个方法不会渲染布局 .... render() 这个方法渲染布局

在UserController 中的actionRegister 方法中修改调用 render() 方法渲染布局

21   //注册
22   function actionRegister(){
23
24     // renderPartial() 方法不渲染布局   render()方法渲染布局
25     //$this->renderPartial('register');
26     $this->render('register');
27   }


刷新访问 http://***.***.**.**:****/shop/index.php?r=user/register ok,在顶端显示 --我是头部-- 在低端显示 --我是脚部--

2. 把公共的部分提取出来,放到 shop.php 中对应的地方,去掉模板文件中公用的代码

ok, 处理完毕,详细过程就不写出来了.....都是苦力活....

3. 写一下布局使用流程

在 /shop/protected/views/layouts/ 目录下写布局文件 . $content 代表普遍模板内容

在 父类控制器 /shop/protected/components/Controller.php 中修改默认使用布局文件 $layout="//layouts/shop"

在控制器的action方法中 使用 render方法渲染布局
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: