属性
设置布局 public $layout = 'login'
取消布局 public $layout = false
2、方法级别
设置布局 $this->layout = 'login'
取消布局 $this->layout = false
3、视图级别
设置布局 $this->context->layout = 'login'
取消布局 $this->context->layout = false
注:什么都不设置为默认布局,读取views/layouts/main.php文件作为布局文件
yii默认布局文件是 /view/layout/main.php 你可以直接修改这么布局文件 或者你可以自定义布局文件 在控制器重新定义以下属性 public $layout = '新布局文件名'还可以禁用布局文件 public $layout = falseyii框架默认会渲染/protected/views/laytout/main.php布局文件,当然我们也可以自己设置控制器特有的布局文件,设置很简单:<?php
class PostController extends Controller
{
public $layout='column2'
设置控制器类的 $layout属性为你想要渲染的布局文件就ok了
那么有了layout布局后,$this->render('index',array('dataProvider'=&
gt$dataProvider,)),yii是先渲染column2布局文件还是先渲染index.php视图模版呢,答案很简单,我们看下
CController.php文件中的render函数就明白了:
[php] view plaincopy
public function render($view,$data=null,$return=false)
{
if($this->beforeRender($view))
{
$output=$this->renderPartial($view,$data,true)
if(($layoutFile=$this->getLayoutFile($this->layout))!==false)
$output=$this->renderFile($layoutFile,array('content'=>$output),true)
$this->afterRender($view,$output)
$output=$this->processOutput($output)
if($return)
return $output
else
echo $output
}
}
可以看到yii是先通过renderPartial来渲染视图模版,然后把模版渲染的结果放入content变量中通过renderFile去渲染布局文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)