Yii - 在Yii用户模块中使用备用视图文件

时间:2012-11-29 00:24:22

标签: module yii yii-extensions

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

4 个答案:

答案 0 :(得分:2)

模块主题视图的路径应为

  

/ {{your_app_name}} /主题/ {{THEME_NAME}} /视图/用户/

从文件夹

复制所有模块视图
  

/ {{your_app_name}} /保护/模块/用户/视图

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

对于你指出的模块“user”,不幸的是它的控制器使用绝对路径作为它们的布局(例如“// layouts / columns2”),所以AFAIK你不能为应用程序和这个模块定义不同的布局。

另见theming with Yii上的官方指南章节。

答案 3 :(得分:0)

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

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