2010-08-15 6 views
0

Мое приложение должно работать следующим образом. Во-первых, действие по умолчанию контроллера по умолчанию (согласно URL) делает его работу. Для целей этого вопроса давайте назовите его MyController и indexAction.Рендеринг макетов в Zend Framework

Затем он пересылает ($ this -> _ forward) в мое меню LayoutControllerAction, которое отображает навигационную часть (меню из базы данных) и пересылает в footerAction, которая затем выводит нижний колонтитул из базы данных (вещи, которые находятся в db, но должны быть видимы в каждом одна страница).

Наконец,/views/scripts/my/index.phtml отображается в макете с помощью этого файла layout() ->.

Вопрос в том, как мне сделать другие части макета, сделанные в соответствующих местах? Нужны ли мне дополнительные файлы menu.phtml и footer.phtml, которые каким-то образом будут отображаться в меню LayoutControllerAction и footerAction и каким-то образом вставлены в соответствующие места внутри layout.phtml? Или я могу иметь только один скрипт layout.phtml со всем html внутри, а menuAction/footerAction просто предоставляет текст из DB, который нужно вставить?

Меня интересует хорошая практика практической работы, а также технические «как», если можно.

ответ

2

Я думаю, вы должны рассмотреть возможность использования только одного layout.phtml в качестве шаблона. Таким образом, ваше действие по умолчанию будет отображать не содержимое макета, а содержимое самой страницы. Например, в приложении для блога вы будете иметь боковую панель и нижний колонтитул, также у вас будет сообщение. Ваш -> viewPostAction() отобразит сообщение, а плагин с методом -> postDispatch() отобразит содержимое макета на каждой странице.

Вы можете принять за основу этот вопрос: how to call multiple controller action from within any action in ZF?

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