Yii模块,主题布局包括模块布局。怎么样?

时间:2013-02-18 13:00:07

标签: layout module yii themes

我需要做类似的事情:

我在/ themes / panel中有主题“panel”,并且布局/themes/panel/views/layouts/main.php带有示例内容

<a>$content</a>

我在/ protected / modules / admin中有模块“admin”,并且布局/protected/modules/admin/view/layouts/main.php带有示例内容

<b>$content</b>

最后我想要

<a><b>view</b></a>

另外在/themes/panel/views/layouts/main.php我需要从模块加载css文件。


在其他解释中: 我有一个模板用于所有面板(标题,css文件,页脚),但每个面板需要单独的布局(只有菜单等内容更改的中间)和一个或多个单独的css文件。

另外一些图像将包含在主题中,其他图像将是模块的个体。

2 个答案:

答案 0 :(得分:1)

您可以使用renderPartial函数加载布局部分。

<?= $this->renderPartial('webroot.themes.' . Yii::app()->theme->name . '.views.layouts.' . Yii::app()->layout . '.<PART_OF_LAYOUT>') ?>

答案 1 :(得分:0)

我不同意在互联网的许多帮助论坛中,当有人要求主题模块时,每个人都建议使用主题文件夹的路径别名。我认为这是错误的,因为它意味着模块被拆分,模块应该是一个可以跨项目使用的黑盒子。只有在几个模块之间共享主题时,此类论坛中提供的建议才有效。如果有人想要&#34;打包&#34;一个模块内的主题,她可以: - 向模块的控制器添加init函数 -inide init,使用类属性布局和路径别名,像这样,使用一个id为&#34; Sample&#34;的模块: 然后你添加到SampleCOntroller.php:

public function init() {
    //BELOW: it will use the layouts/main.php inside the module.
    $this->layouts = "sample.views.layouts.main"; 
}

哟可以在这里查看路径别名: http://www.yiiframework.com/doc/guide/1.1/en/basics.namespace