2013-09-09

使用 beginContent() 和 endContent() 設定 Yii 的 layouts

Yii 的 views/layouts 是用來放置 layouts 的目錄,在預設的情況下會有 main.php 和 column1.php 和 column2.php。
main.php 內容定義了,<head> 以及 page header 和 footer 等。 column1.php 和 column2.php 是使用 main.php 的網頁佈局,但修改內容的部份。
例如,我們有個 layout 叫做 mylayout.php:
<?php $this->beginContent('//layouts/main'); ?>
<div>
    <?php echo $content ?>
</div>
<div class="sidebar">
    <ul>
        <li>option 1</li>
        <li>option 2</li>
    </ul>
</div>
<?php $this->endContent() ?>
beginContent('//layouts/main') 表示以 main 為佈局,在  beginContent() 和 endContent() 之間為 content 呈現的修改。 beginContent() 和 endContent() 之外的範圍不建議加入 HTML,否則會在 main.php 內容的前面或後面(<html> 標籤之前或 </html> 標籤之後)。

在 controller 裡可以這樣使用:
public function actionMylayout() {
    $this->layout = 'mylayout';
    $this->render('//site/index');
}
表示以 mylayout.php 為佈局,views/site/index.php 為內容。





沒有留言:

FB 留言