Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-03-2012 23:04:29

colombe11
Nouveau membre
Date d'inscription: 21-03-2012
Messages: 5

[ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Bonjour,

Merci à vous de prendre sur votre temps.
voilà mon problème :

Est-il possible de récupérer le controller dans le bootstrap afin d'orienté vers le bon layout ?

Ayant lu précédemment dans un autre sujet qu'il n'était pas possible de récupérer le controller dans le bootstrap, j'aimerai en avoir la confirmation.

Ensuite, peut-être que ma logique n'est pas bonne et que je devrait peut être déterminé le layout approprié dans le init() de mon controller ?

Qu'en dites vous ?
Merci

Hors ligne

 

#2 22-03-2012 14:09:40

tomtom
Membre
Lieu: Strasbourg
Date d'inscription: 07-01-2009
Messages: 14

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Dans le bootstrap ce n'est pas possible parce que le routage n'a pas encore été fait dans ZF ne sait pas quel controller il va servir.

Tu peux utiliser plutot un plugin de controller dans la méthode routeShutdown ou preDispatch (par exemple).

Si tu mets le code approprié dans le init() de ton controller ca marche aussi mais si tu risque de devoir repeter le meme code pour chaque controller qui aura besoin de changer le layout

Hors ligne

 

#3 22-03-2012 14:17:38

colombe11
Nouveau membre
Date d'inscription: 21-03-2012
Messages: 5

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Merci, beaucoup, va pour un plugin alors !

Une autre petite chose, un détail.

Il y a deux type de bootstrap d'après se que j'ai pu voir :
- Celui du front_controller, avec dispatch en général sur l'index PHP.
- Celui du zend_application au quel on applique un fichier de config et qui appelle les classes bootstrap de l'application puis des modules, en passant la fonction bootstrap() puis run()

Y'a t-il une réelle différence entre les deux ?
Le quel utilisez-vous ? et pourquoi ?

Merci et bonne journée

Hors ligne

 

#4 22-03-2012 14:20:47

tomtom
Membre
Lieu: Strasbourg
Date d'inscription: 07-01-2009
Messages: 14

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Pour moi il n'y a qu'un seul type de bootstrap c'est celui de Zend_Application.
Je ne vois pas ce que tu appel : "Celui du front_controller, avec dispatch en général sur l'index PHP"

Hors ligne

 

#5 22-03-2012 15:00:37

colombe11
Nouveau membre
Date d'inscription: 21-03-2012
Messages: 5

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

De tête c'est cette synthaxe

index.php

Code:

$application = Zend_Controller_Front::getInstance();

//tu fait le blabla de configuration 

$application->dispatch(); //et tu lance

Hors ligne

 

#6 22-03-2012 15:10:58

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Salut,

Voici un passage de la documentation de ZF : http://framework.zend.com/manual/fr/zen … front.html

dispatch(Zend_Controller_Request_Abstract $request = null, Zend_Controller_Response_Abstract $response = null) fait le gros travail du contrôleur frontal. Il peut facultativement prendre un objet de requête et/ou un objet de réponse, permettant ainsi au développeur de fournir des objets personnalisés.

Si aucun objet de requête ou de réponse ne lui sont fournis, dispatch() vérifiera s'il existe des objets précédemment enregistrés et utilisera ceux-là ou des objets par défaut pour les utiliser dans son processus (dans les deux cas, le mode HTTP sera utilisé par défaut).

De la même manière, dispatch() vérifie s'il existe des objets routeur et distributeur inscrits, et instancie des versions par défaut si aucun n'est trouvé.

Le processus de distribution possède trois évènements
- le routage
- la distribution
- la réponse

Le routage a lieu exactement une fois, utilisant les valeurs de l'objet de requête quand dispatch() est appelé. La distribution a lieu dans une boucle ; une demande peut soit indiquer des actions multiples à distribuer, soit le contrôleur ou un plugin peuvent remettre à zéro l'objet de requête et ainsi forcer la distribution d'actions supplémentaires. Quand tout est réalisé, le contrôleur frontal retourne la réponse.

Pour résumer, le dispatch() du Front Controller sert à instancier et appeler ton contrôleur. Il en récupère ensuite la réponse wink

++

Hors ligne

 

#7 22-03-2012 15:32:06

colombe11
Nouveau membre
Date d'inscription: 21-03-2012
Messages: 5

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

ça commence à s'éclaircir, je vous remercie

Hors ligne

 

#8 25-03-2012 21:46:58

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: [ZF 1.11]Changer le layout dans le Bootstrap en fonction du controller

Moi je faisai un plugin comme ça sous 1.5 et je voudrai savoir si j'en ai encore besoin en MVC modulaire (Zend_Application) sous 1.11 ?

Code:

[lang=php]
class setModularLayoutPlugin extends Zend_Controller_Plugin_Abstract
{
    /**
    * Chargement de la configuration des layouts suivant le modules
    * appelé en surchargent la methode routeShutdown
    *
    * @name    routeShutdown
    * @access  public
    * @param   object $request object request du front controlleur
    */
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        // on recupere le module cible de l'objet request
        $module = $request->getModuleName();
        // on definit les options par defaut de layout pour le module appelé
        $layout_options = array(
            'layout'     => 'DefaultLayout',
            'layoutPath' => 'application/modules/'.$module.'/layouts/',
            'contentKey' => 'content'
        );
        // on lance le MVC et on definit le typage
        $layout = Zend_Layout::startMvc($layout_options);
        $layout->getInflector()->setTarget(':script.:suffix')
                               ->setStaticRule('suffix', 'phtml');
    }
}

Dernière modification par BeRoots (25-03-2012 22:00:41)


wink Non au language SMS sur nos forums wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages