Layout Yii(嵌套)子模块的布局
我已经在Yii中设置了一个嵌套的模块结构,由于某种原因,子模块似乎根本没有使用任何布局 这是我的继承人之路Layout Yii(嵌套)子模块的布局,layout,module,yii,Layout,Module,Yii,我已经在Yii中设置了一个嵌套的模块结构,由于某种原因,子模块似乎根本没有使用任何布局 这是我的继承人之路 app protected modules parent views layouts column1.php column2.php
app
protected
modules
parent
views
layouts
column1.php
column2.php
main.php
modules
child
我在配置文件中添加了如下模块
'modules'=>array(
'parent'=>array(
'modules'=>array(
'child',
),
),
),
这两个模块都起作用,但在子模块中,我得到的只是解释默认/索引控制器的消息,可以通过以下路径进行自定义。没有显示布局内容
根据文档,我希望子模块从父模块继承布局
我确实使用gii生成了子模块(它不会创建子模块),因此我创建了一个典型的模块,在父模块中添加了一个模块文件夹,并将结果作为子模块复制到父模块中
有什么好主意吗?原来问题在于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论坛上提供的一个解决方法是修改父模块中的“column1”和“column2”布局,以使用半固定路径
$this->beginContent('//../modules/parent/views/layouts/main')