Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous !
Je vous expose mon petit problème...
Je dois implémenter dans le site que je développe une fonctionnalité qui permet de mettre le site "en maintenance", donc inaccessible partout sauf pour la partie admin (qui est le seul module, pour l'instant en tout cas).
Dans le module d'administration, on peut modifier un fichier xml qui contient l'information "site en maintenance ou pas". Ce fichier xml (qui sert à la configuration générale du site) est chargé dans le bootstrap.
Je peux donc vérifier si le site est en maintenance ou pas, et ensuite, j'imagine, faire un _forward() (et pas un _redirect() pour ne pas me manger la vérification à nouveau) sur une page spéciale "Ce site est en maintenance, donc allez en enfer et revenez plus tard" (il fait chaud, je finis par m'énerver en codant, pardonnez moi :p)...
Mais quelle vérification exactement ? Et à quel endroit de mon boostrap ?
Un tit peu de code pour que vous voyiez ce que fait mon bootstrap (très fortement inspiré du tutorial "An Example ZF Blog Application" par Pádraic Brady).
self::setupEnvironment(); // Setup de php Zend_Loader::registerAutoload(); self::setupRegistry(); self::setupConfiguration(); // Chargement de mon fichier XML self::setupFrontController(); // setControllerDirectory, setParam('registry') et autres joyeusetés self::setupView(); // encodage, doctype, helper, et on finit par un startMVC() self::setupDatabase(); self::setupAcl();
Voilà, vos lumières me seront sûrement très utiles... Merci par avance
Dernière modification par upsilon (31-07-2008 12:01:11)
Hors ligne
Bonjour,
Tu peux faire un plugin avec un preDispatch qui ressemble à ça :
function preDispatch($request) { // si pas en maintenance if (! test_si_mode_maintenance) { return; } // mode maintenance : admin, on laisse entrer if ($request->getModuleName() == "module") { return; } // reste du mode maintenance $request->setModuleName("admin"); $request->setControllerName("index"); $request->setActionName("maintenance"); }
Dans ce cas, quand tu es en mode maintenance, tout est redirigé vers la page admin-indexController-maintenanceAction, sauf les pages d'admin qui sont bien servies. Si on n'est pas en mode maintenance, on laisse tout passer.
A+, Philippe
Hors ligne
Parfait, c'est exactement ce qu'il me fallait Ce genre de p'tits plugins est très bien fait et très bien pensé ! (et permet de comprendre un peu mieux comment ZF fonctionne en interne au niveau du dispatching, ce qui n'est jamais perdu).
Et merci pour le temps de réponse, ça fait plaisir d'avoir une communauté aussi active
Hors ligne
Pages: 1