Zend Framework, PhpRenderer не может отобразить шаблон, добавляет контроллеры в имя шаблона.

Я перешел с ZF2 на ZF3. Теперь у меня проблема. Мой скрипт просмотра находится в правильном месте, конфигурация кажется нормальной, но я получаю следующую ошибку:

Zend \ View \ Renderer \ PhpRenderer:: render: Невозможно отобразить шаблон "party/ controllers / write-party/ add"; распознаватель не может разрешить в файл

Это довольно распространенная ошибка, но проблема в том, что по какой-то причине я получаю 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 ответ

Решение

Вопрос оказался более сложным, чем я думал. Внутренне ZF3 предполагает, что папка с контроллерами модуля называется Controller (единственное число). Если это не так, это позволяет пространству имен YourModule/Controllers/ControllersName/ быть переведенным на путь your-module/controllers/controllers-name/ и вот что я увидел Все это происходит в InjectTemplateListener"s mapController метод. Так что я думаю, что это ошибка, потому что для ZF2 все работало без проблем.

Другие вопросы по тегам