我在Yii中设置了一个嵌套模块结构,由于某种原因,子模块似乎根本没有使用任何布局。
这是我的路径heirachy。
app
protected
modules
parent
views
layouts
column1.php
column2.php
main.php
modules
child
我在配置文件中添加了模块,如下所示
'modules'=>array(
'parent'=>array(
'modules'=>array(
'child',
),
),
),
两个模块都起作用,但在子模块中,我得到的是解释默认/索引控制器的消息可以在以下路径中自定义。没有显示布局内容。
根据文档,我希望子模块从父级继承布局。
我确实使用gii(不会创建子模块)生成子模块,因此我将其创建为典型模块,在父项中添加了一个模块文件夹,并将结果作为子项复制到我的父模块中。
任何想法在哪里看?
答案 0 :(得分:0)
事实证明问题在于Yii中的视图解析方案。我的父模块将默认布局设置为'column1',它由我的子模块继承。在'column1'布局中,'main'布局使用以下代码呈现。
$this->beginContent('/layouts/main');
在Yii的视图分辨率方案中,它映射到当前模块的layouts文件夹。对于我父模块中的视图,这将映射到父视图文件夹中的主布局,并且工作正常。
/protected/modules/parent/views/layouts/main.php
对于我的子模块中的视图,这将映射到子视图文件夹中的主要布局,该布局不存在,并且解析失败。
/protected/modules/parent/modules/child/views/layouts/main.php
在Yii论坛here上提供的解决方法是修改父模块中的“column1”和“column2”布局,以使用半固定的路径。
$this->beginContent('//../modules/parent/views/layouts/main')