Zend Framework,PhpRenderer无法呈现模板,将控制器添加到模板名称中

时间:2016-11-14 12:50:45

标签: php zend-framework zend-framework2 zf3

我从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视图脚本的正确路径?

1 个答案:

答案 0 :(得分:0)

这个问题比我想象的要复杂得多。在内部ZF3假定具有模块控制器的文件夹名为Controller(单数)。如果不是这种情况,它会将命名空间YourModule/Controllers/ControllersName/转移到路径your-module/controllers/controllers-name/,这就是我所看到的。所有这些都发生在InjectTemplateListener的{​​{1}}方法中。所以我猜这是一个错误,因为ZF2的工作没有问题。