我从ZF2迁移到ZF3。现在我有一个问题。我的视图脚本在正确的位置,配置似乎没问题,但我收到以下错误:
Zend \ View \ Renderer \ PhpRenderer :: render:无法渲染模板" party / controllers / write-party / add&#34 ;;解析器无法解析为文件
这是一个相当常见的错误要解决,但问题是由于某种原因,我在模板路径中得到controllers
文件夹。模板路径应为parties/write-party/add
。
module.config.php
return [
'controllers' => [
'factories' => [
WritePartyController::class => WritePartyControllerFactory::class,
],
],
'router' => [
'routes' => [
'parties' => [
'type' => Literal::class,
'options' => [
'route' => '/parties',
'defaults' => [
'__NAMESPACE__' => 'Parties\Controllers',
'controller' => 'Index',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'add' => [
'type' => Segment::class,
'options' => [
'route' => '/add',
'defaults' => [
'controller' => WritePartyController::class,
'action' => 'add',
],
],
],
//...
'view_manager' => [
'template_path_stack' => [
'parties' => __DIR__ . '/../view',
],
'strategies' => [
'ViewJsonStrategy',
],
],
],
如何获取parties/write-party/add
视图脚本的正确路径?
答案 0 :(得分:0)
这个问题比我想象的要复杂得多。在内部ZF3假定具有模块控制器的文件夹名为Controller
(单数)。如果不是这种情况,它会将命名空间YourModule/Controllers/ControllersName/
转移到路径your-module/controllers/controllers-name/
,这就是我所看到的。所有这些都发生在InjectTemplateListener
的{{1}}方法中。所以我猜这是一个错误,因为ZF2的工作没有问题。