【问题标题】:Yii layout not displayingYii布局不显示
【发布时间】:2013-09-19 16:44:49
【问题描述】:

我正在开发一个用 PHP 编写并使用 Yii 框架的现有项目。

我想创建一个全新的布局。在视图/布局下,我创建了一个名为 bootstrap.php 的文件,并在其中填充了我想用于所有页面的标准模板。我在布局之间放置了我想要放置内容的位置。

在控制器中,在渲染视图之前,我调用:

$this->layout = "//layouts/bootstrap";

我希望这会强制布局使用我的新布局,但它总是会恢复到 main.php 布局。

如果我也将其更改为不存在的布局 $this->layout = "//layouts/bootstrapxx";

它将以空白布局呈现页面(只是将内容直接输出到浏览器)。这表明 Yii 检测到了我的新布局的位置,但无论如何它仍在渲染旧布局。

如果有人能帮我弄清楚如何将布局设置为新布局,将不胜感激。

谢谢

【问题讨论】:

  • 只参考bootstrap,而不是//layouts/bootstrap
  • 谢谢,就在我发布问题之后,我就这样做了,并且成功了。你知道为什么它会把我推到主布局做 //layouts/bootstrap 而不是只给我空白或错误​​?
  • 您可以在CControler::render() 中看到逻辑(点击“显示”链接查看源代码)。如果它无法获取布局文件,它将继续不应用布局。 . .

标签: php yii


【解决方案1】:

Yii 布局应该相对于布局路径引用(默认为protected/views/layouts),其中有一个getter 和一个setter,分别由getLayoutPath()setLayoutPath() 确定。

所以,要让您的代码正常工作,只需参考 bootstrap 而不是 //layouts/bootstrap

布局的应用在CControler::render()处理

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多