Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bon voila, je suis débutant (très) avec le ZF et le modèle MVC. J'utilisais auparavant la méthode 'classique' de développement en php, c'est a dire, un beau fouillis
Voici mon problème. Je suis présentement à porter mon site php vers le ZF. Le site étant un design standard a deux colonne j'ai donc créer un layout ZF pour affecter le contenu des deux colonnes principales au layout, pour le moment ça fonctionne bien.
Par contre, dans ma colonne de droite je veux ajouter différents "modules" dynamiquement dépendant de la page, par exemple: un module de connexion, un des dernier commentaires ajoutés. En php "classique' j'y arrivais en fesant simplement un include('/box_connexion.php'), maintenant avec zend je suis un peut perdu, dois-je créer un contrôleur, vue et modèle pour chaque petit "modules" de mon site et comment les intégrer conditionnellement à la page en cours?
Merci !
Hors ligne
Normalement, chaque "module" différents devraient être codé dans des contrôleurs différents. Car il est logique qu'un contrôleur gérant la connexion des utilisateurs ne devrait pas s'occuper de l'affichage du dernier commentaire ajouté.
Ensuite, pour les intégrer selon la page demandée, il te faudra mettre des conditions dans tes vues :
<?php if ( condition ) : ?> <!-- HTML --> <?php endif; ?>
Afin de pouvoir "filtrer" le nom des pages au sein d'un de tes layouts, il te faudra assigner à ta vue le nom du contrôleur utilisé et cela depuis le contrôleur lui-même :
$this->view = $this->_request->getControllerName();
Cela te permettra de faire ceci dans ton layout :
<?php if ( $this->controller == 'mypage' ) : ?> <!-- conditional print --> <?php endif; ?>
Dernière modification par acharrex (31-10-2008 08:27:25)
Hors ligne
Merci pour ta réponse acharrex,
suivant ta démarche serait-t'il correcte d'utiliser:
action($action, $controller, $module = null, array $params = array());
dans les différentes conditions pour appeler le traitement de mes modules à même mes différentes vue de page?
Hors ligne
Tu peux juste être plus clair, car je ne comprends pas ce que tu souhaites exactement ?
Hors ligne
Suivant ton exemple, Dans mon layout j'utilise:
<?php if ( $this->controller == 'mypage' ) : echo $this->action('test', 'modules'); endif; ?>
Cela a pour effet de "m'inclure" mon module dans mon layout conditionellement à la page en cours, c'est exactement ce que je voulais faire et sa fonctionne plutôt bien.
Par contre, je me demande si c'est une bonne méthode pour procéder ?
Hors ligne
je me pose également la même question. Faut il mettre des else-if dans le template ou est-ce que l'utilisation des segments et des actionstacks est la solution ?
Hors ligne
Vous vous posez trop de question !
La solution est votre solution.
Tu peux utiliser un segment, actionstack ou aussi codé un View Helper..
Le Zend Framework est pensé pour être libre de faire comme on le souhaite.
Dernière modification par nORKy (03-11-2008 12:00:05)
Hors ligne
acharrex a écrit:
Normalement, chaque "module" différents devraient être codé dans des contrôleurs différents. Car il est logique qu'un contrôleur gérant la connexion des utilisateurs ne devrait pas s'occuper de l'affichage du dernier commentaire ajouté.
Ensuite, pour les intégrer selon la page demandée, il te faudra mettre des conditions dans tes vues :Code:
<?php if ( condition ) : ?> <!-- HTML --> <?php endif; ?>Afin de pouvoir "filtrer" le nom des pages au sein d'un de tes layouts, il te faudra assigner à ta vue le nom du contrôleur utilisé et cela depuis le contrôleur lui-même :
Code:
$this->view = $this->_request->getControllerName();Cela te permettra de faire ceci dans ton layout :
Code:
<?php if ( $this->controller == 'mypage' ) : ?> <!-- conditional print --> <?php endif; ?>
Bonjour Acharrex,
Juste une petite remarque, ne serait ce pas :
$this->view->controller = $this->_request->getControllerName();
en lieu et place de :
$this->view = $this->_request->getControllerName();
A moins qu'il existe une subtilité de passage de variable à la vue que je ne connais pas ?
Cordialement,
Hors ligne
elkolonel a écrit:
Juste une petite remarque, ne serait ce pas :
Code:
$this->view->controller = $this->_request->getControllerName();en lieu et place de :
Code:
$this->view = $this->_request->getControllerName();A moins qu'il existe une subtilité de passage de variable à la vue que je ne connais pas ?
Cordialement,
oui oui
Pour ma faire, j'ai un plugin qui initialise tout ca avant (parmis d'autres choses) sur dispatchLoopStartup
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->init(); $view = $viewRenderer->view; $this->_view = $view; $view->module = $request->getModuleName(); $view->controller = $request->getControllerName(); $view->action = $request->getActionName();
Hors ligne