使用yii的layout,加入這句話時,它會自動在子頁面上面添加一個div包裹

使用yii的layout,加入<?php echo $content; ?>這句話時,它會自動在子頁面上面添加一個div包裹,而且div的id命名爲id=content,這個和已有id重複,如何解決?


http://hi.baidu.com/jyhscy/item/2b05034c9d9f1e35fb8960d1



yii中layout的column和main文件之間的關係

    在yii創建應用成果之後,在view/layouts/目錄下,會產生3個佈局頁面:

    -->main.php

    -->column1.php

    -->column2.php

    由於首次使用的是命令行Shell方式創建的應用,yii本身會創建一個控制器組件:Controller.php,它繼承了CController控制器,該文件位於/components目錄下:

+++++++++++++++++++++++++++++++++++++++++++

<?php



class Controller extends CController

{

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

    public $menu=array();

    public $breadcrumbs=array();

}



?>

+++++++++++++++++++++++++++++++++++++++++++

    文件裏設置了layout的默認頁面爲: ‘//layouts/column1′,然後再view/layouts/中,column1再次調用main.php視圖文件:

+++++++++++++++++++++++++++++++++++++++++++

<?php $this->beginContent('//layouts/main'); ?>

    <div id="content">

        <?php echo $content; ?>

    </div><!-- content -->

<?php $this->endContent(); ?>

+++++++++++++++++++++++++++++++++++++++++++

    加載完main.php文件之後,在包含index.php中的內容即$content中的內容.

    如果控制器都是由Gii這個腳手架自動生成,那麼所有的控制器都會繼承都是繼承於Controller而非官方所說的繼承與CController控制器,在頁面視圖渲染,多了一層column1.php中間視圖.

    所以說yii在 $this->render(‘index’) 一個頁面的時候,使用 column1.php 包含 main.php,再由 main.php 包含 index.php,最後返回內容.(這是針對於繼承Controller方式)。

    而至於column2.php只幹什麼的呢,貌似是個打醬油的,沒有用到。

    如果我們想更改默認的layout視圖文件,要麼直接在Components/Controller.php更改$layout = ‘//layouts/newlayout_name‘,要麼控制器繼承時,直接 extends CController 而不是Controller,然後配置config/main.php:

++++++++++++++++++++++++++++++++++++++++++++

return array(

    ………………

    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

    'name'=>'web application',

    'layout'=>'newlayout_name'

    ………………

+++++++++++++++++++++++++++++++++++++++++++++

    然後在控制器裏調用:

+++++++++++++++++++++++++++++++++++++++++++++

//TestController爲自定義一個測試控制器,直接繼承CController,默認是繼承controller

class TestController extends CController{

    ………………

}

++++++++++++++++++++++++++++++++++++++++++++++

    當然也可以直接在控制器裏設置layout屬性,覆蓋默認的layout,使得視圖渲染更靈活.此處只是爲說明 /view 下layouts/中,main.php和column1.php,以及index.php之間的關係.

++++++++++++++++++++++++++++++++++++++++++++++

//直接在controller中如下覆蓋設置layout

public $layout='//layouts/newlayout_name';

++++++++++++++++++++++++++++++++++++++++++++++



因此,只需要打開column1.php,把裏面的div修改下就ok


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