1

我在 Yii 中设置了一个嵌套模块结构,由于某种原因,子模块似乎根本没有使用任何布局。

这是我的路径heirachy。

app
    protected
        modules
            parent
                views
                    layouts
                        column1.php
                        column2.php
                        main.php
                modules
                    child

我在配置文件中添加了模块如下

'modules'=>array(
    'parent'=>array(
        'modules'=>array(
            'child',
        ),
    ),
),

两个模块都起作用,但在子模块中,我得到的只是解释默认/索引控制器的消息,可以在以下路径中自定义。没有显示布局内容。

根据文档,我希望子模块从父模块继承布局。

我确实使用 gii 生成了子模块(它不会创建子模块),所以我将它创建为一个典型的模块,在我的父级中添加了一个模块文件夹,并将结果作为子级复制到我的父模块中。

任何想法在哪里看?

4

1 回答 1

0

事实证明,问题在于 Yii 中的视图解析方案。我的父模块将默认布局设置为“column1”,它由我的子模块继承。在“column1”布局中,“主”布局使用以下代码呈现。

$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')
于 2012-08-29T22:54:32.723 回答