Zend_Layout - Быстрый старт
В этом разделе представлены два основных способа использования
Скрипты макетов
В обоих случаях вам нужно создать скрипт макета.
Скрипты макета используют Zend_View (или другую
реализацию интерфейса Zend_View_Interface, используемую вами).
Переменные макета регистрируются с помощью
метки
заполнения Пример:
Поскольку
Использование Zend_Layout с MVC Zend Framework-а
Для начала посмотрим, как производится инициализация Zend_Layout для использования в MVC:
В контроллере действий вы можете обращаться к экземпляру макета как к помощнику действий:
В своих скриптах вида вы можете обращаться к объекту вида через
помощник вида
Вы можете в любой момент времени извлечь зарегистрированный с MVC
экземпляр
Наконец, плагин фронт-контроллера для
Для примера предположим, что в вашем приложении вызывается
Эта возможность особенно полезна, если используется вместе с помощником действий и плагином ActionStack, с помощью которых вы можете создавать стек действий для обхода в цикле диспетчеризации и таким образом создавать страницы с различными "виджетами". Использование Zend_Layout как отдельной компонентыКак отдельная компонента Zend_Layout не предоставляет столько возможностей или такого удобства, как в случае использовании с MVC. Тем не менее, и в таком использовании сохраняются два основных преимущества:
При использовании Zend_Layout в качестве отдельной компоненты просто инстанцируйте объект макета, используйте различные аксессоры для установки состояния, устанавливайте переменные как свойства объекта и производите рендеринг макета:
Пример макетаИногда одна картинка стоит тысячи слов. Ниже показан пример скрипта макета, показывающий, как все это может быть объединено.
Действительный порядок элементов может быть иным в зависимости от установленного CSS. Например, если вы используете абсолютное позиционирование, то можете разместить навигацию в конце документа, но она будет отображаться вверху, то же самое можно сказать о боковой панели, заголовке. Реальный порядок извлечения содержимого остается тем же.
|