2010-11-15 10 views
0

Je suis nouveau à ZF, donc ma question pourrait sembler newbish et je m'excuse à l'avance si elle a déjà répondu.Quand initialiser les détails spécifiques à la mise en page et au thème dans Zend Framework?

La séquence dans laquelle ZF exécuter un processus complet est
1. routeStartup
2. route processus
3. routeShutdown
4. dispatchLoopStartup
5. preDispatch
6. processus d'expédition commence
7 La méthode d'initialisation du contrôleur
8. pré-cadencage de l'assistant du contrôleur
9. preDispatch de l'action
10. actio n
11. postDispatch
12. postDispatch de contrôleur de l'aide
de l'action 13. postDispatch
14. dispatchLoopShutdown

maintenant il y a plusieurs endroits où l'on peut lancer + mise en page config & Détails du thème. Nous pouvons le faire sur les scènes 5, 7, 8 et 9. Quelle est la meilleure scène à cet effet? L'application utilisera AJAX, donc si je charge les détails de la mise en page à l'étape 5, il y a beaucoup de chances que plus tard je vais enlever la mise en page et envoyer seulement la réponse XML.

Répondre

2

Il est généralement préférable de configurer votre mise en page en utilisant le application resource plugin pendant le bootstrap.

Pour désactiver la mise en page tout en répondant à XHR, utilisez l'aide à l'action AjaxContext. Edit: À quel moment savez-vous quel thème vous utiliserez? S'il est assez tôt et que les paramètres requis sont disponibles, vous pouvez l'implémenter à l'aide d'une méthode bootstrap _init* ou d'un plugin de ressource d'application de disposition personnalisée. Sinon, je voudrais implémenter et enregistrer une aide d'action de contrôleur, définissant le thème dans son override preDispatch. L'utilisation de la seconde méthode vous permet également d'accéder à la requête, ce qui vous permet de prendre une décision en fonction de la méthode de requête, que vous vous en souciez ou non. En fait, cela pourrait être un bon candidat pour un remplacement personnalisé de l'assistant AjaxContext lui-même.

+1

Oh, 7 secondes devant moi et une meilleure réponse :) +1 – Daimon

+0

L'application utilisera des thèmes différents, de sorte que le bootstrap processus ne saura pas quel thème charger/initier. Bien qu'il y aura un thème par défaut, mais le thème réel à charger sera extrait de la base de données sous les paramètres personnels de l'utilisateur. Deuxièmement, si nous lançons le «bootstrap» de loyauté et l'annulons plus tard, cela signifie que nous avons d'abord exécuté un code et que plus tard nous n'aurons pas besoin de ce qui sera une pénalité de performance. – Bryan

+0

@Brian J'ai mis à jour ma réponse avec d'autres idées pour vous. En outre, il y a peu de frais généraux dans la configuration de la mise en page, bien que la détermination d'un thème entraîne davantage de travail. – Phil

0

Vous pouvez lancer la mise en page et de configuration avant l'étape 1 pendant Bootstrap - c'est le meilleur endroit :)