zend 2视图渲染模板具有相同名称来自不同的模块

时间:2013-11-21 05:18:33

标签: view zend-framework2 rendering code-duplication

我正在使用Zend2中的可重用模块,我遇到了一个与代码重复有关的问题。

我有一个用户模块,它有一个HTML模板寄存器(模板路径:用户/用户/寄存器)。 它包含一些基本的HTML,但在我的一个项目中,我需要使用< div>用于CSS样式化(HTML页面的其余部分不会改变)。

在用户模块之后,我加载了我的应用程序模块,我可以覆盖用户/用户/注册模板并添加新代码,但我无法通过它呈现原始用户/用户/注册模板。

应用程序模块中的代码示例 - >用户/用户/注册:

<div><?=$this->render('user/user/register')?></div>

这会导致无限循环,我不想从用户模块中的用户/用户/注册模板中复制/粘贴所有HTML。

任何人都可以帮助我?

谢谢!

1 个答案:

答案 0 :(得分:0)

你想要实现的目标是行不通的。您不能拥有两个名称相同的模板。加载最新密钥的模块将始终具有优先级。

您必须了解模板只是大数组中的一个键。

'view_manager' => array(
    'template_map' => array(
        'layout/layout' => 'my\layout.phtml'
    )
)

因此,如果您有两个提供此配置的模块,则不会更改使用密钥layout/layout的事实。因此,无论以后加载什么模块,都会获胜。

TL / DR 您只能覆盖模板,而不能扩展模板。在您的情况下,您必须创建一个单独的模板。