
[英]Magento - Overwrite core 'Review' module to add custom 'Email' field
[英]Extending module but keep no-overwrite template map
我一直在寻找如何在其他项目中重用我的用户模块。 由于我为每个客户都有自定义功能,因此我决定创建:
UserModule 有以下视图:登录和添加(用于注册)。 UserCustom 正在扩展 Module.php ,仅此而已。
<?php
namespace UserCustom;
use Laminas\Mvc\MvcEvent;
use Users\Module as UserModule;
class Module extends UserModule
{
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
现在,假设我只想更改登录视图以添加徽标。
我不明白如何覆盖特定的视图文件并保留其他文件。 使用我当前的配置,我必须覆盖 UserModule 拥有的每个视图(覆盖到新文件位置甚至供应商)。
我已经声明了以下代码来登录新的视图文件:UserCustom module.config.php:
'view_manager' => [
'template_map' => [
'user/login' => __DIR__ . '/../view/user-custom/new_login.phtml',
但是,当我 go 到 /add 页面时,似乎我需要声明每个视图。 Laminas\View\Renderer\PhpRenderer::render:无法渲染模板“用户/添加”; 解析器无法解析到文件
我的 UserModule 有一个
'template_path_stack' => [
'user' => __DIR__ . '/../view',
],
但我不知道它是否对我有帮助。
谢谢
要覆盖任何操作视图文件,您必须了解 Laminas 如何搜索视图文件的基本功能。 要理解这一点,您可以查看配置here ,我将在下面解释。
return [
'template_stack' => [
// template stack means where will all the view files of every controller and its action will be found.
],
'template_map' => [
// the default map would be as follows
// 'ModuleName/ControllerName/ActionName' => 'actual path of file.'
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
],
];
要覆盖您在 module.config.php 文件中定义的操作模板文件,如下所示。
return [
'template_map' => [
'application/index/index' => __DIR__ . '/../view/mymodulename/mycontrollername/myactionname.phtml',
];
我希望我已经回答了你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.