Php 在Yii2中更改视图内的布局文件
我正在用Yii2做一个小项目 假设我在一个视图(例如Php 在Yii2中更改视图内的布局文件,php,model-view-controller,yii2,Php,Model View Controller,Yii2,我正在用Yii2做一个小项目 假设我在一个视图(例如site)中有相同的布局(页眉、页脚),除了这个视图中的login.php。我希望此文件中有不同的页眉/页脚或没有页眉/页脚。我可以做什么?仅从此视图文件中删除页眉/页脚 我所能做的就是在不同的视图中改变布局。是否可以更改视图单个文件中的布局?在相关操作中: public function actionYourAction($id) { $this->layout = 'yourNewLayout'; return $
site
)中有相同的布局(页眉、页脚),除了这个视图中的login.php
。我希望此文件中有不同的页眉/页脚或没有页眉/页脚。我可以做什么?仅从此视图文件中删除页眉/页脚
我所能做的就是在不同的视图中改变布局。是否可以更改视图单个文件中的布局?在相关操作中:
public function actionYourAction($id)
{
$this->layout = 'yourNewLayout';
return $this->render('yourView', [
'model' =>$model,
]);
}
我来晚了一点,但是你可以在你的视野内改变你的布局。您不必在控制器中声明它。我个人认为最好是在视图中进行,因为您可以很容易地在以后看到正在发生的事情。如果您进行HTML编辑,您将进入视图文件,很容易看到它使用的布局。将其放入控制器中,您(或稍后的人)可能会错过嵌套在控制器操作中的布局更改 由于
$this
引用的是Yii2中的视图,而不是Yii1中的控制器,因此旧的$this->layout
在视图中不再起作用
现在,在Yii2中,使用$this->context
从视图中引用控制器
$this->context->layout = 'your-layout';
在我的项目中,我想要两个布局:一个用于站点,一个用于webapp。由于main.php文件是默认布局,我创建了一个site.php布局,在siteController的开头,在类声明之后,我将
public $layout = 'site';
结果是,只有siteController呈现的视图使用site.php布局。这对我来说很有效。我参加聚会也晚了一点,但今天我在为这件事挣扎。。。 对我来说,仅仅因为我想跳过页脚或页眉就创建一个单独的布局,这似乎是一个小小的胜利。如果我能坚持主布局,我就可以直接进入控制器和动作 当前已加载,并以这种方式将其忽略(在main.php中编写): 。。。后来:
<?php if (!$skipFooter): ?> //Never at login...
<footer class="footer">
<div class="container">
<p class="pull-left">© YourSite.com <?= date('Y') ?></p>
<p class="pull-right"><?= Yii::powered() ?></p>
</div>
</footer>
<?php endif; ?>
//登录时从不。。。
©;YourSite.com
Great and instant solution:)你的摇滚乐@scaisEdge bro。你必须参考
<?php if (!$skipFooter): ?> //Never at login...
<footer class="footer">
<div class="container">
<p class="pull-left">© YourSite.com <?= date('Y') ?></p>
<p class="pull-right"><?= Yii::powered() ?></p>
</div>
</footer>
<?php endif; ?>