Yii框架自定义标头

时间:2011-06-05 03:17:55

标签: php templates yii

我希望我的目标网页和我的网络应用中的所有其他网页都有不同的标题。这样做的最佳方式是什么?

据我所知,页眉和页脚是从view / layouts / main.php加载的。在我的例子中,因为我使用的是主题,所以它是从themes / new / views / layouts / main加载的。 PHP

现在我想要除了着陆页之外的所有页面的标题部分,使用“main.php”中定义的标题部分,但是着陆页应该有不同的标题。我该怎么做?我应该使用渲染部分吗?因为我是Yii新手,我该怎么做?

我还可以使用其他布局文件之一,column1.php或column2.php吗?怎么样?

我不是在寻找广泛的手持。关于人们如何实现类似功能,我只需要提醒一下。

2 个答案:

答案 0 :(得分:1)

这在一定程度上取决于标题在您的方法方面的差异。如果您希望它们完全分开,您可以将其他布局文件与main.php结合使用,或者代替它。

您可以在控制器类的开头设置布局文件,例如:

public $layout='//layouts/column2';

这将设置控制器的默认布局。您可以更改动作功能中的值或评估“beforeAction”功能中的条件。

默认生成的管理页面(使用“gii”或命令行)将那些column1.php和column2.php布局与main.php一起使用,并提供一个体面的示例来查看它们的工作原理。只需将内容移出您想要自定义的main.php并将其放入单独的布局文件中。如果您仍在共享内容,则可以将共享内容保留在main.php中。

如果只是更改一些属性,您可以使用$this->getAction()->getId()获取操作名称,并使用它来更改布局中加载的内容,例如某个css或js文件。您希望在控制器中执行的任何复杂逻辑。

对于类似导航栏或类似内容的内容,您还可以根据您在控制器中设置的环境变量使用includerenderPartial

答案 1 :(得分:0)

我通常创建一个像HeaderWidget这样的小部件,只有很少的视图文件并包含在主布局中。在控制器或动作中定义标题的必要视图文件并将它们传递给小部件。

在基本控制器中,您可以定义属性public $ headerName ='defaultHeaderView' 设定值取决于某些条件。

对于cource,你需要创建BController扩展CController,所有其他控制器都从你的BController扩展