如何在yii中为特定控制器操作或视图设置布局?

时间:2013-01-17 09:31:29

标签: php yii

嗯,这部分非常重要。我正在和YII合作开展一个项目。我遇到了一个问题,我试图在控制器中用布局设置我的一个动作。首先,这个动作甚至没有采用所提到的默认布局,其中另一个动作actionIndex()在同一控制器上正常工作。然后我在控制器中尝试了$this->layout='//layouts/new',甚至在渲染到控制器的视图上进行了操作。那甚至不起作用。我检查了它是否会向布局$content返回任何new.php。但它甚至没有进入new.php。即使我将它放在布局的第一行,die()也无效。我需要帮助。

3 个答案:

答案 0 :(得分:4)

 public function actionTest() {
        $this->layout = 'new';
        $this->render('test');

    }

在views / layouts文件夹中创建新布局。

答案 1 :(得分:2)

听起来我觉得你的行动甚至没有把它带到需要渲染视图的地方。动作代码中可能存在某种错误,阻止它进展到最后。要进行测试,请清除以下操作中的所有代码,并在此处发布错误。

$this->layout = '//layouts/new';
$this->render('view',array(
    'model'=>$model,
));

这假定您已定义以下布局和视图:

protected/views/layouts/new.php
protected/views/<controllername>/view.php

new.php是回显$ content的地方,view.php是显示$ model信息的地方

答案 2 :(得分:0)

将其放入您的控制器(yii 1.1)

public function beforeAction($action) {
    $this->layout = '//layouts/newlayout';
    return true;
}