在Yii2中更改视图中的布局文件

Moi*_*ohd 17 php model-view-controller yii2

我正在使用Yii2做一个小项目.

假设我在视图中具有相同的布局(页眉,页脚)(例如site),除了login.php在此视图中的a.我想在此文件中使用不同的页眉/页脚.我该怎么做才能从此视图文件中删除页眉/页脚.

我只能在不同的视图中更改布局.是否可以在视图的单个文件中更改布局?

sca*_*dge 33

在相对行动内:

public function actionYourAction($id)
{

    $this->layout = 'yourNewLayout';

    return $this->render('yourView', [
        'model' =>$model,
    ]);
}
Run Code Online (Sandbox Code Playgroud)


Wad*_*ade 14

我有点迟到了,但你CAN从您的视图中改变你的布局.您不必在控制器中声明它.我个人认为最好在视图中这样做,因为你可以很容易地看到后来发生了什么.如果您进行HTML编辑,则可以进入视图文件,并轻松查看其使用的布局.将它放在Controller中,您(或稍后的某个人)可能会错过嵌入控制器操作的布局更改.

由于$this您在Yii2中引用了您的视图而不是Yii1中的控制器,因此旧$this->layout视图在您的视图中不再起作用.

现在,在Yii2中,您可以从视图中引用控制器$this->context.

$this->context->layout = 'your-layout';
Run Code Online (Sandbox Code Playgroud)


小智 5

在我的项目中,我想要2个布局:一个用于站点,一个用于webapp.由于main.php文件是默认布局,我已经创建了一个site.php布局,并且在siteController的开头,就在类声明之后,我已经放了

public $layout = 'site';
Run Code Online (Sandbox Code Playgroud)

结果是只有siteController渲染视图使用site.php布局.它对我有用.