用Yii创建web应用之后,默认会在view/layouts/目录下产生3个布局页面:
main.php
column1.php
column2.php
使用命令行Shell方式创建的应用,yii本身会创建一个控制器组件:Controller.php 继承了CController控制器,该文件位于/components目录下。
</pre>
//componets/Controller.php文件内容如下
/**
* Controller is the customized base controller class.
* All controller classes for this application should extend from this base class.
*/
class Controller extends CController
{
/**
* @var string the default layout for the controller view. Defaults to '//layouts/column1',
* meaning using a single column layout. See 'protected/views/layouts/column1.php'.
*/
public $layout='//layouts/column1';
... ...
}
<pre>
</pre>
//column1.php文件内容
<?php $this->beginContent('//layouts/main'); ?>
<div class="container">
<div id="content">
<?php echo $content; ?>
<!-- content -->
<?php $this->endContent(); ?>
<pre>
包裹的两个div层,默认class名称为container,这可能与自己命名的container有冲突,需要视实际情况做一些调整,加载完main.php文件之后,在包含index.php中的内容即$content中的内容.
如果控制器都是由Gii这个脚手架自动生成,那么所有的控制器都会继承都是继承于Controller而非官方所说的继承与CController控制器,在页面视图渲染,多了一层column1.php中间视图.
所以说yii在 $this->render(‘index’) 一个页面的时候,使用 column1.php 包含 main.php , 再由 main.php 包含 index.php,最后返回内容.(这是针对于继承Controller方式).
如果我们想更改默认的layout视图文件,要么直接在Components/Controller.php更改$layout = ‘//layouts/newlayout_name’,要么控制器继承时,直接 extends CController 而不是Controller,然后配置config/main.php:
</pre> //更改config/main.php,添加layout应用级别layout return array( ... ... 'name' => 'Web Application', 'layout' => 'newlayout_name', ... ... ) <pre>
然后控制器中调用:
</pre>
//TestController 自定义一个测试控制器
class TestController extends CController{
... ...
}
<pre>
内容参考自:http://blog.webnotes.cn/the-relationship-between-main-php-and-column-php-in-layout-on-yii/
如需转载请注明: 转载自26点的博客
本文链接地址: Yii中默认布局的修改方法
转载请注明:26点的博客 » Yii中默认布局的修改方法