2010-11-15 2 views
0

Я новичок в ZF, поэтому мой вопрос может выглядеть новичком, и я извиняюсь заранее, если он уже ответил.Когда нужно инициализировать детали макета и темы в Zend Framework?

Последовательность, в которой ZF выполнить полный процесс
1. routeStartup
2. начинается процесс маршрута
3. routeShutdown
4. dispatchLoopStartup
5. preDispatch
6. Способ доставки
7 . Метод инициализации контроллера
8. Вспомогательная вспомогательная память контроллера
9. предварительная отсрочка действий
10. actio п
11. Помощник действий в postDispatch
12. диспетчерский-х postDispatch
13. postDispatch
14. dispatchLoopShutdown

сейчас есть несколько мест, где мы можем инициировать + конфигурацию макет & тему деталь. Мы можем сделать это на этапах 5, 7, 8 и 9. Какой этап является лучшим для этой цели.

Приложение будет использовать AJAX, поэтому, если я загружу детали макета на этапе 5, есть много шансов, что позже я удалю макет и отправлю только ответ XML.

ответ

2

Обычно лучше настроить макет, используя application resource plugin во время загрузки.

Чтобы отключить макет, отвечая на XHR, используйте вспомогательный помощник AjaxContext.

Редактировать: В какой момент вы знаете, какую тему вы будете использовать? Если это достаточно рано и требуемые параметры доступны, вы можете реализовать это с помощью метода начальной загрузки _init* или плагина ресурса приложения.

В противном случае я бы осуществил и зарегистрировал помощник действия контроллера, установив тему в своем preDispatch переопределении. Использование второго метода также дает вам доступ к запросу, поэтому вы можете принять решение на основе метода запроса, беспокоитесь ли вы о макете или нет. Фактически, это может быть хорошим кандидатом для пользовательского переопределения самого помощника AjaxContext.

+1

О, 7 секунд до меня и лучшего ответа :) +1 – Daimon

+0

Приложение будет использовать различные темы, так бутстраповская процесс не будет знать, какую тему загружать/инициировать. Хотя будет тема по умолчанию, но фактическая тема для загрузки будет извлекаться из базы данных в личных настройках пользователя. Во-вторых, если мы инициируем лойот-бутстрап, а затем отменим его, это означает, что изначально мы запускали код, а позже нам не понадобится то, что будет штрафом за производительность. – Bryan

+0

@Bryan Я обновил свой ответ с несколькими идеями для вас. Кроме того, в настройке макета немного накладных расходов, хотя определение темы потребует больше работы. – Phil

0

Вы можете инициировать и макет конфигурации перед шагом 1 во время начальной загрузки - это самое лучшее место :)

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