Zend 3 - Изменить базовый путь шаблона - PullRequest
0 голосов
/ 07 мая 2018

Я только начинаю переносить некоторые из моих приложений из Zend # 1 в Zend # 3. Все работает нормально, но с точки зрения, у меня возникли проблемы с пониманием концепции.

Как подсказывают учебники, макет моего проекта выглядит следующим образом:

module
  Application
    view
      application
        index
          main.phtml
          foo.phtml
        baz
          index.phtml

Мне интересно, зачем вам нужно дублировать папку «application» внутри директории view - вы уже находитесь в каталоге хирачей модуля. Есть ли способ изменить путь поиска для распознавателя шаблонов по умолчанию, чтобы имя модуля отсутствовало? Просто полагаться на "template_path_stack" viewManager не работает. Мне действительно нужно написать собственный распознаватель здесь?

Большое спасибо!

PS. Нет, я не хочу использовать пользовательские карты шаблонов здесь ;-) Я хочу понять и использовать револьвер по умолчанию без шаблонных карт, если это возможно.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

«Приложение» - это название модуля в вашем общем «приложении». В начале «Приложение» является единственным модулем, но обычно добавляют другие модули: у вас может быть модуль для «Клиентов» и другой модуль для «Продавцов». Иерархия папок представления следует той же иерархии, что и ModuleName: ControllerName: ActionName, и ZF необходимо использовать имя модуля в иерархии папок представления в случае, если у вас есть идентичные пары контроллера и имени действия в двух или более модулях. Вполне вероятно, что модуль «Клиенты» и модуль «Поставщики» будут иметь действие «индекс». Менее вероятно, что оба будут иметь одинаковые имена контроллеров, но об этом не может быть и речи. Если у вас был контроллер с именем «Контакты» в модуле «Клиенты» и в модуле «Поставщики», «контакты / индекс» не достаточно информации, чтобы сообщить ZF, какое представление использовать. Ему нужно имя модуля в иерархии папок, чтобы различать «клиенты / контакты / индекс» и «поставщики / контакты / индекс».

UPDATE

Нужно обратить внимание на то, что ZF3 берет такие вещи, как определения маршрутизатора, просмотр папок и кто знает, что еще из всех ваших различных модулей, и объединяет их в единую структуру. Другими словами,

module
  Application
    view
      application
        add
          add.phtml          
        delete
          delete.phtml          
        edit
          edit.phtml          
        index
          index.phtml          

module
  Clients
    view
      clients
        add-client
          add.phtml          
        delete-client
          delete.phtml          
        edit-client
          edit.phtml          
        client-index
          index.phtml          

module
  Vendors
    view
      vendors
        add-vendor
          add.phtml          
        delete-vendor
          delete.phtml          
        edit-vendor
          edit.phtml          
        vendor-index
          index.phtml

узнается примерно так:

module
  ....
    view
      application
        add
          add.phtml          
        delete
          delete.phtml          
        edit
          edit.phtml          
        index
          index.phtml          
      clients
        add-client
          add.phtml          
        delete-client
          delete.phtml          
        edit-client
          edit.phtml          
        client-index
          index.phtml          
      vendors
        add-vendor
          add.phtml          
        delete-vendor
          delete.phtml          
        edit-vendor
          edit.phtml          
        vendor-index
          index.phtml

и, возможно, вы могли бы поместить все свои файлы представлений в один модуль.

Возможно, это помогает объяснить, почему папка с именем модуля находится под папкой «view». Папка с именем модуля над папкой «view» имеет функцию хранения. Папки с именами модулей под папкой «представление» служат для ссылки на модули, с которыми связаны файлы представления в агрегированном определении.

0 голосов
/ 07 мая 2018

Нашел одно возможное решение!

В настройках вашего модуля добавьте это в view_manager ::

'controller_map' => [
    'Dashboard\Controller\DashboardController' => 'Dashboard'
],

Вместо поиска шаблона «Dashboard / view / dashboard / [controller] / [action] .phtml» теперь фреймворк будет искать «Dashboard / view / [controller] / [action] .phtml». По сути, вы говорите Zend использовать здесь какое-то сокращение и убрать значение массива из разрешения шаблона (взгляните на InjectTemplateListener :: mapController ())

В любом случае ... лучшее решение и объяснение приветствуются!

...