【问题标题】:Best way to remove header and footer for a particular page in YII在 YII 中删除特定页面的页眉和页脚的最佳方法
【发布时间】:2023-03-08 08:19:01
【问题描述】:
我遇到了一种情况,我不需要为 yii 中的特定页面显示header(它有导航栏和徽标)andfooter`。有许多调整可以做到这一点。例如,检查布局不会加载页眉和页脚的特定操作..
yii 是否为这个问题提供了任何可靠的东西?
我们有$this->layout->unsetHeader();? 或$this->layout->unsetFooter();? 之类的吗
我不想检查布局文件来解决这个问题。
我们将不胜感激。
【问题讨论】:
标签:
php
html
css
layout
yii
【解决方案1】:
我没有找到你想要的功能。
我认为最好和最简单的方法是使用适当的布局,并以这种方式在控制器中调用它
public function actionYourView()
{
$this->layout='yourLayout';
$this->render('yourView');
}
通过这种方式,您不需要在布局内部检查页眉和页脚,逻辑都在控制器中。并且分配适当的布局很容易。
【解决方案2】:
你可以设置$this->layout为false;
$this->layout = false
$this->render('view', $data);
这也可以使用renderpartial来实现
$this->renderPartial('view', $data);
上述方法将显示一个页面段,而不是页面布局的其他项目(例如包含 javascript 和 css 以及 HTML 标题)。
如果您希望布局文件中包含逻辑,则可以从控制器传递变量。
$this->layout = 'mytheme';
$this->show_css = true;
$this->render('view', $data);
在你的布局中
<html>
<body>
<?php if ($this->show_css) { ?>
<div id="menu">
<ul><li>Menu Option 1</li><li>Menu Option 2</li></ul>
</div>
<?php } <?
<div id="body">
<?php echo $this->content; ?>
</div>
<div id="footer">
</div>
</body>
</html>
如果您不想在控制器中使用变量。请改用全局变量。
Yii::app()->params['show_menu'] = true;