Изменение Zend_ViewHelper_Pagination_Controller Partial-Path

У меня есть приложение Zend-Framework. Я использую модуль-структуру, которая Zend_Controller_Frontобеспечивает. Вот небольшая выдержка из моей структуры каталогов (только важные части для этого вопроса):

root-directory
- modules
  - blog
    - views
      - scripts
        - index_index.phtml
- views
  - pagination_control.phtml

Как вы можете видеть, у меня есть скрипты вида, специфичные для модуля / контроллера / действия. Эти виды расположены в соответствующем пути (в данном случае modules/blog/views, У меня также есть более общий каталог просмотра, расположенный в корневом каталоге моего приложения.

Что я делаю сейчас, чтобы позвонить PaginationControl-ViewHelper в modules/blog/views/scripts/index_index.phtml, Этот помощник по видам, однако, как вы знаете, представляет частичное представление. ViewHelper пытается найти частичное представление в том же каталоге (то есть modules/blog/views/scripts, Так как я хочу использовать тот же view-частичный скрипт (pagination_control.phtml) в разных модулях я хочу сделать это частичное представление доступным из каждого модуля. Поэтому я хочу поместить этот файл в общем views-папка в корневом каталоге.

Однако это не работает. ViewHelper всегда ищет скрипт вида в соответствующей папке модуля.

Любой человек может помочь сделать его доступным из моего общего views-directory?

1 ответ

Решение

Как вы можете видеть здесь, поскольку элемент управления разбиением на страницы ZF 1.6.2 может принимать массив вместо строки для частичного аргумента, и в этом массиве вы устанавливаете 1-е имя частичного и 2-е имя модуля. Это все еще без документов.

Используя массив, вы можете указать модуль ("общий"?) Для частичного использования.

Реальный вызов будет (с $part ваш третий аргумент для помощника представления paginationControl()):

$this->view->partial($partial[0], $partial[1], $pages);

Это полезно, если у вас есть "общий" модуль.

Теперь здесь вы используете общую папку. Вы должны установить его как общую папку для вашего Zend_View следующим образом (в Boostrap или в коде ресурсов):

$view->addScriptPath("/root-directory/views");

или лучше:

$view->addScriptPath("/root-directory/views/partials");

И тогда вам не нужно указывать каталог модуля. Zend_View всегда должен проверять частичное в этой папке.

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