Yii框架開發商城(二)

    接上一篇繼續說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方法渲染布局



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章