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 все работало без проблем.