3

是否可以在模块(例如user )中使用自定义视图文件以保持模块(第 3 方)完好无损?以某种方式扩展模块,使用包含我的自定义视图的视图文件夹。

4

4 回答 4

2

用户模块视图文件复制到<app>/themes/<current_theme>/views/user/. 更一般地说,使用以下“公式”自定义模块视图:<app>/themes/<current_tehem>/views/<modules_name>/<controller_name>/<view_file_to_customize>.php

于 2014-07-16T13:58:55.690 回答
2

模块主题视图的路径应该是

/{{your_app_name}}/themes/{{theme_name}}/views/user/

从文件夹中复制所有模块视图

/{{your_app_name}}/protected/modules/user/views

到上面提到的文件夹,这将完成这项工作。之后,您可以根据需要自定义视图。

于 2013-07-25T10:41:19.403 回答
1

使用主题。对于名为“user”的模块和“profile/edit”的视图路径,创建“/themes/flashy/user/views/profile/edit.php”。您还可以在“/themes/flashy/layouts/column2.php”中定义新布局。然后在“protected/config”中添加到你的配置文件:

return array(
    // many settings...
    'theme' => 'flashy',

对于您指出的模块“用户”,不幸的是,它的控制器对其布局使用绝对路径(例如“//layouts/columns2”),因此AFAIK您无法为应用程序和此模块定义不同的布局。

另请参阅有关Yii 主题化的官方指南章节。

于 2012-12-05T03:56:24.243 回答
0

我不同意在 Internet 的许多帮助论坛中,当有人要求为模块设置主题时,每个人都会建议主题文件夹的路径别名。我认为这是错误的,因为它意味着要拆分模块,并且模块应该是可以跨项目使用的黑盒。只有在多个模块之间共享一个主题时,此类论坛中给出的建议才有效。如果有人想在模块中“打包”一个主题,她可以: - 将一个 init 函数添加到模块的控制器 - 在该 init 中,使用类属性布局和路径别名,像这样,假设一个模块的 id是“样本”:然后添加到 SampleCONtroller.php:

public function init() {
    //BELOW: it will use the layouts/main.php inside the module.
    $this->layouts = "sample.views.layouts.main"; 
}
于 2015-01-14T15:45:46.470 回答