Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je désirerais, dans une application MVC, savoir s'il est possible d'afficher plusieurs modules sur une seule page.
Je crois que les aides de vues servent à cela mais je n'ai pas vraiment trouvé d'exemple sur le net permettant de faire ce que je désirerais.
Exemple concret : Ma page contient :
- une vidéo en haut, avec description, et tout le toutim.
- des commentaires sur cette vidéo en bas.
Et j'aurais aimé pouvoir découper mon applications en modules :
- admin
- video
- commentaire
Est-ce que la page principale en question peut utiliser les deux modules "video" et "commentaire" ?
Je suppose qu'il me faut mettre cette page principale dans le module par défaut, mais après je sèche.
Comment son contrôleur peut-il interagir avec les contrôleurs des deux modules ?
Deuxième question, si la première est possible.
Je voudrais que, dans la page, les deux parties soient relativement "indépendantes".
C'est à dire que si, par exemple, j'affiche 5 commentaires alors qu'il y en a 8 disponibles, je puisse passer à la seconde "page" des commentaires, sans recharger la page principale.
Merci d'avance pour vos conseils.
Hors ligne
Bonjour,
Oui, on peut le faire. Il faut un layout et un mécanisme qui indique au framework les actions et vues à traiter et afficher en plus de la vue par défaut.
Personnellement j'ai choisit de faire un plugin qui me rajoute les actions correspondants au menu des différents modules et qui regarde les relations entre les éléments du site pour afficher automatiquement les éléments directement liés (par exemple les groupes auquel appartient un utilisateur)
Pour rajouter un plugin, il suffit de faire un
Zend_Controller_Front::getInstance()->registerPlugin(new monPlugin());
Pour le code d'un plugin qui rajoute des vues à la page, il faut dans la méthode "dispatchLoopStartup" du plugin :
- récupérer la pile des actions restant à traiter
$stack = $this->getStack();
- créer un nouveau controller_request
$MenuUserRequest = new Zend_Controller_Request_Simple();
- indiquer le module et la vue à ce controller
$MenuUserRequest->setControllerName('Utilisateur') ->setActionName('menu');
- éventuellement Rajouter des paramètres supplémentaires
$MenuUserRequest->setParam('monParam', 'maValeur');
-enfin le rajouter à la pile récupéré plus haut
$stack->pushStack($MenuUserRequest);
C'est une méthode, il en existe d'autres avec ce framework.
Hors ligne
Merci pour cette piste.
Si j'ai bien compris, on utilise un plug-in à qui l'on va donner la liste des actions des divers contrôleurs qui impactent la page ; et c'est ce plug-in qui va lancer ces actions.
Je ne suis pas encore très à l'aise avec les plug-in, je vais donc faire quelques tests pour voir si je m'en sors avec cette méthode.
Hors ligne
En fait le plugin ne va pas lancer les actions, il se contente de dire au Zend_Controller_Front quelles sont les actions que le contrôleur devra appeler. Le framework se chargera du reste.
En dehors de ça, oui c'est bien ça, le plugin doit savoir quelles actions doivent être appellé pour prévenir le contrôleur grâce au code ci-dessus. A chacun de choisir sa méthode pour ça : base de donnée, fichier de config, autre.
Hors ligne
Pages: 1