2014-11-17 4 views
0

Я создал новый модуль в моей установке ZF2 под названием AB2CD. Индекс IndexController indexAction возвращает только новый ViewModel(). Сообщение об ошибке я получаю:PHP Zend Framework 2 - Renderer ищет шаблон в неожиданной папке

Zend\View\Renderer\PhpRenderer::render: Unable to render template "ab2-cd/index/index"; resolver could not resolve to a file 

мой взгляд менеджер module.config.php является:

'view_manager' => array(
    'display_not_found_reason' => true, 
    'display_exceptions'  => true, 
    'doctype'     => 'HTML5', 
    'not_found_template'  => 'error/404', 
    'exception_template'  => 'error/index', 
    'template_map' => array(
     'layout/layout'   => __DIR__ . '/../view/layout/layout.phtml', 
     'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 
     'error/404'    => __DIR__ . '/../view/error/404.phtml', 
     'error/index'    => __DIR__ . '/../view/error/index.phtml', 
    ), 
    'template_path_stack' => array(
     __DIR__ . '/../view', 
    ), 
), 

Где бы он быть придумывают папке ab2-cd? Я могу решить эту ошибку, переименовав папку, но я надеюсь понять, почему она ищет не то место, чтобы начать с ...

+0

ab2-cd, вероятно, связано с именем контроллера - каков полный путь к представлению? –

+0

Что такое пространство имен в вашем IndexController? Как выглядит конфигурация контроллера в вашем файле module.config.php? – cptnk

+2

Его автоматическая сгенерированная папка на основе модуля. Где он разделит CapitalCase на тире, чтобы его капитальный случай –

ответ

2

ab2-cd генерируется из ваших модулей: AB2CD. если вы не используете автоматическое сгенерированное имя, укажите имя шаблона для модели представления вручную с помощью метода setTemplate.

, если вы хотите продолжать использовать автогенерируемые имена, ваша структура каталогов должна быть что-то вроде:

--module 
|--AB2CD 
    |--view 
    |--ab2-cd 
     |--[lower-cased-controller-name] 
     |--[lower-cased-action-name] 
1

В дополнении к ответу Exlord ты не должен вручную установить шаблон в вашем контроллере вы можете также предоставить карту шаблона в вашем module.config.php

'view_manager' => array(
    ... 
    'template_map' => array(
     'ab2-cd/index/index' => __DIR__ . '/../view/AB2CD/index/index.phtml', 
    ), 
    ... 
), 

Я также рекомендую использовать имена модулей с номерами в нем. Что-то вроде AbToCd, которое переводится в ab-to-cd/index/index, будет работать лучше с psr-0.

Смежные вопросы