我想将整个错误处理捆绑在一个模块中。它到目前为止工作,但错误模板仍然是默认的[project root]/module/Application/view/error/index.phtml
。我想使用它,但我的附加代码包装。为此,我需要将默认的异常模板添加为部分。不可能(不再)将模块名称传递给Partial视图助手。所以我尝试了这个(建议here):
[project root]/module/ErrorHandling/view/exception.phtml
echo $this->partial('Application/error/index');
但它不起作用:
Zend \ View \ Exception \ RuntimeException:Zend \ View \ Renderer \ PhpRenderer :: render:无法呈现模板“Application / error / index”;解析器无法解析为/ var / www /.../ my-project / vendor / zendframework / zend-view / src / Renderer / PhpRenderer.php中的文件:494
它仅适用于/module/{AnotherModule}/view/{another-module}
子文件夹中的视图。
如何从另一个模块(但在/module/{AnotherModule}/view/{another-module}
子文件夹之外)获取视图呈现为部分视图?
答案 0 :(得分:0)
解决方法是将所需视图添加到View Manager的模板映射中,例如:
<强> config/autoload/global.php
强>
return [
'view_manager' => [
'template_map' => [
'default_zf_error_view' => __DIR__ . '/../../module/Application/view/error/index.phtml'
]
]
];
它有效,但知道如何以更清洁的方式解决这个问题仍然会很有趣。
答案 1 :(得分:0)
您不必在global.php
将它添加到模块的module.config.php
就足够了。这些视图也可以在其他模块中访问,因为ZF2合并了不同模块的所有配置文件。请在此处详细了解in the documentation in the chapter Advanced Configuration Tricks。
所以在module.config.php
:
return [
//...
'view_manager' => [
'template_map' => [
'default_zf_error_view' => __DIR__ . '/../../module/Application/view/error/index.phtml'
]
]
//...
];
在任何其他模块的控制器中,您现在可以执行以下操作:
$viewModel->setTemplate('default_zf_error_view');