yii框架預設渲染模板的時候會渲染布局,新建立的專案也包含了3個預設的布局:main.php column1.php column2.php,並且預設建立了乙個公共控制器 controller.php(在components目錄下),預設的sitecontroller.php是繼承的這個controller.php,這個控制器指定了布局檔案為column1.php。
讓我們看看渲染乙個模板需要經過哪些步驟:
1.控制器中通過 $this->render('index'); 來開始渲染index.php視**件
2.在渲染index時,首先將index.php中的php指令碼解析完畢,然後將解析的結果儲存到$content變數裡
3.系統檢查是否指定布局檔案,先找控制器的$this->layout 屬性,如果這個值不為空的話,則再render()渲染這個布局檔案,將$content值作為布局檔案中的變數,也就是在布局檔案中使用<?php echo $content;?>即可輸出index.php裡解析好的內容,而這個layout在controller中預設指定為了column1.php,在這個布局裡,又巢狀了專案預設的布局檔案main.php.
4 .如果控制器沒有指定layout屬性,則會去找專案配置中的layout屬性,也就是main.php中的layout屬性,而這個屬性不需要人工指定,預設就是views/layouts/main.php檔案。通過render解析這個布局檔案,將index.php的內容作為$content變數穿進去。
也就是說,按照預設情況,我們渲染乙個檢視需要渲染3個檔案,分別是 index.php column1.php main.php 。
對於不習慣布局模式的人來說,這無疑增加了麻煩。
其實關閉布局模式很簡單,你可以將controller中的 layout屬性設定為false即可。
那麼如何配置呢?見**
初學YII1的layout布局和gii模組(三)
layout布局 其實大概意思在上次已經說了 比如乙個企業站,頭部和尾部每個頁面都是公共的,這樣的我們就可以提出來。在yii中這樣提,在view下的layouts資料夾裡新建乙個php檔案,比如blog.php 這個檔案裡存的就是 公共部分,例如我的企業站頭和尾。舉例如下 我的頭部 中間變動部分 我...
Yii 布局檔案的動態切換
如果你看了底層controller的原始碼和module 模組 的原始碼,那麼你就能很熟練的婉轉布局切換了。1 在控制器中切換當前布局和在方法中動態切換布局 namespace useyii useyii web controller class indexcontroller extends co...
yii2的自動載入類檔案
一。檢視了一下yii2的載入原理 每個命名空間都有對應的路徑 然後檔名一定要與類名相同 通過yii classmap可設定。或別名也可識別。當我要用乙個不認識的類名時,會自動呼叫魔術方法yii類下的spl autoload register,然後執行autoload方法,在這個方法裡會把對應的類檔案...