1.3 Zend Framework — Быстрый старт. Создание макета

Zend, “Zend Framework Quick Start. Create A Layout”, public translation into Russian from English More about this translation.

Translate into another language.

Вы могли заметить что скрипты вида в предыдущих разделах были фрагментами HTML — не полными страницами. Так было задумано; мы хотим чтобы наши действия возвращали содержимое связанное только с самим действием (action), а не с приложением в целом.

Сейчас мы скомпонуем сгенерированный контент в полноценную HTML страницу. Мы также хотели бы иметь единообразный стиль для всего приложения. Мы будем использовать глобальный макет сайта, чтобы выполнить обе эти задачи.

В Zend Framework используються два шаблона проектирования для реализации макета: » Two Step View и » Composite View. Two Step View связан с шаблоном » Transform View; основная идея в том, что ваше приложение создает представление вида, которое потом встраиваеться на финальной стадии преобразования. Шаблон Composite View представляет собой вид (view) собранный из одиного или более атомарных, видов приложения.

В Zend Framework, Zend_Layout объединяет идеи, которые лежат в основе этих шаблонов. Вместо того, чтобы каждый view-скрипт действия должен был включать код относящийся ко всему веб-узлу, они могут просто сосредоточиться на своих собственных обязаностях.

Время от времени, тем не менее, необходима определенная информация view-скрипта в вашем макете сайта. К счастью, Zend Framework предоставляет ряд плэйсхолдеров (placeholders) вида, которые позволяют вам предоставлять такую информацию из ваших view-скриптов действий.

Что бы начать использовать Zend_Layout, первое мы должны сделать — информировать наш загрузчик (bootstrap) об использовании ресурса Layout. Это может быть сделано используя команду zf enable layout:

01. % zf enable layout

02. Layouts have been enabled, and a default layout created at

03. application/layouts/scripts/layout.phtml

04. A layout entry has been added to the application config file.

Как видим, эта команда обновила файл application/configs/application.ini, и сейчас содержит следующее внутри секции production:

01. ; application/configs/application.ini

02.

03. ; Add to [production] section:

04. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

В конечном итоге INI файл выглядит следующим образом:

01. ; application/configs/application.ini

02.

03. [production]

04. ; PHP settings we want to initialize

05. phpSettings.display_startup_errors = 0

06. phpSettings.display_errors = 0

07. includePaths.library = APPLICATION_PATH "/../library"

08. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"

09. bootstrap.class = "Bootstrap"

10. appnamespace = "Application"

11. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

12. resources.frontController.params.displayExceptions = 0

13. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

14.

15. [staging : production]

16.

17. [testing : production]

18. phpSettings.display_startup_errors = 1

19. phpSettings.display_errors = 1

20.

21. [development : production]

22. phpSettings.display_startup_errors = 1

23. phpSettings.display_errors = 1

Эта инструкция указывает приложению что бы оно скрипты для макета вида искал в application/layouts/scripts. Если посмотрите этот каталог, то увидите, что этот каталог сейчас существует и содержит файл layout.phtml.

Нам так же неоходимо обеспечить, что для нашего приложения используеться объявление XHTML DocType. Для этого, мы должны добавить ресурс в наш загрузчик (bootstrap).

Простейший путь добавить ресурс загрузчика это просто создать защищенный (protected) метод начинающийся с фразы _init. В таком случае, необходимо инициализировать doctype, следовательно мы создадим метод _initDoctype() внутри нашего класса загрузчика:

01. // application/Bootstrap.php

02.

03. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap

04. {

05. protected function _initDoctype()

06. {

07. }

08. }

Внутри этого метода, мы должны подсказать виду (view) какой doctype использовать. Но где объекту вида (view object) взяться? Удобное решение, это инициализировать ресурс вида (View resource); как только мы будем иметь ресурс, мы может извлечь объект вида из загрузчика и использовать его.

Для инициализации ресурса вида, добавим следующие строки в файл application/configs/application.ini, в секцию production:

01. ; application/configs/application.ini

02.

03. ; Add to [production] section:

04. resources.view[] =

Это говорит о том, что вид инициализирован без опций ('[]' указывает, что "view" являеться массивом, и мы ни чего не передаем ему).

Теперь, объект вида, который мы имеем, позволяет полностью завершить наш метод _initDoctype(). В нем, мы сперва убедимся, что ресурс вида (View resource) запущен, выберем объект вида, и потом сконфигурируем его:

01. // application/Bootstrap.php

02.

03. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap

04. {

05. protected function _initDoctype()

06. {

07. $this->bootstrap('view');

08. $view = $this->getResource('view');

09. $view->doctype('XHTML1_STRICT');

10. }

11. }

Теперь, когда мы инициализировали Zend_Layout и установили Doctype, давайте создадим наш макет сайта:

01. <!-- application/layouts/scripts/layout.phtml -->

02. <?php echo $this->doctype() ?>

03. <html xmlns="http://www.w3.org/1999/xhtml">

04. <head>

05. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

06. <title>Приложение Zend Framework — Быстрый старт</title>

07. <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?>

08. </head>

09. <body>

10. <div id="header" style="background-color: #EEEEEE; height: 30px;">

11. <div id="header-logo" style="float: left">

12. <b>ZF Quickstart Application</b>

13. </div>

14. <div id="header-navigation" style="float: right">

15. <a href="<?php echo $this->url(

16. array('controller'=>'guestbook'),

17. 'default',

18. true) ?>">Guestbook</a>

19. </div>

20. </div>

21.

22. <?php echo $this->layout()->content ?>

23.

24. </body>

25. </html>

Мы захватываем контент приложения используя помощники вида (view helper) layout(), и доступный ключ "content". Вы можете вывести и другие блоки если захотите этого, но в большинстве случаев этого достаточно.

Отметим также использование placeholder′а headLink(). Это простейший путь генерировать HTML элементы <link>, а также отлеживать их в вашем приложении. Если вам необходимо добавить дополнительную поддержку CSS таблиц в отдельном действии, вы можете сделать это, и быть уверенным что она будет присутствовать в конечном представлении страницы.

Замечание: Контрольная точка

Теперь перейдите на "http://localhost" и посмотрите исходный код страницы. Вы должны увидеть XHTML заголовок, и элементы head, title, body.

Original (English): Zend Framework Quick Start. Create A Layout

Translation: © antdmi, Victor Gryshko .

translatedby.com crowd

Like this translation? Share it or bookmark!