使用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