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


How to set a layout for a particular controller action or view in yii?

嗯,这部分非常重要。我在和YII一起做一个项目。我遇到过这样的问题,我试图用布局在控制器中设置一个动作。首先,这个动作甚至没有采用提到的默认布局,而另一个动作actionIndex()在同一控制器上运行良好。然后我尝试了$this->layout='//layouts/new'在控制器甚至朋友视图渲染到控制器上。这根本没用。我检查了它是否返回任何$content到布局new.php。但它甚至没有到new。php。die()不工作,即使我把它放在布局的第一行。我需要帮助。

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

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

这听起来像你的行动甚至没有使它到需要渲染视图的地方。操作代码中可能存在某种错误,使其无法执行到最后。对于测试,清除操作中除以下代码以外的所有代码,并在这里发布您的错误。

$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信息的地方

把这个放到你的控制器(yii 1.1)

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