Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J’utilise un formulaire générer via zend_form dans mon layout. J’aimerais savoir ou place ce code pour pouvoir l’afficher sur toute les pages sans devoir l’écrire dans toutes les actions.
Quelqu’un peu me dépanner ?
merci
Dernière modification par jahora (31-01-2009 03:51:02)
Hors ligne
Bonjour,
Je dirais un controller d'actions communs à tous les autres.
Dans la fonction init() du controller l'initialisation du formulaire.
Dans la fonction postDispatch(), le passage à la vue du formulaire.
Zend_Loader::loadClass('Tight_Controller_Action'); /** * YSENA * * Application_Controllers_Action * A le rôle de Controlleur global et commun à l'ensemble de l'application. * * Il regroupe donc tout ce qui doit être commun entre tous les controlleurs * qui vont en hériter. * * ex.: * - Chargements de modèles communs * - Envoie d'un menu à la vue * - Envoie d'un pied de page à la vue * - Envoie des mentions légales * - etc. * * (ex. : ContactController extends Application_Controllers_Action) * * * @author Benjamin Dulau */ class Application_Controllers_Action extends Tight_Controller_Action { /** * @method init() * * Initialise le super controlleur, * donc toute l'initialisation commune à tous les controlleurs * descendants. */ public function init() { parent::init(); $this->initView(); $this->view->baseUrl = $this->_request->getBaseUrl(); // Traducteur $this->translate = Tight_Registry::get('translate'); /* * Formulaire : ATTENTION AU HASARD, je ne connais pas Zend_Form */ Zend_Loader::loadClass('forms_SearchForm'); $this->form = new forms_SearchForm(); // etc. } function postDispatch() { parent::postDispatch(); // Passage du formulaire à la vue $this->view->form = $this->form->renderForm(); // AU HASARD AUSSI } }
Donc chaque controlleur concerné étend notre Application_Controllers_Action
require_once 'Action.php'; /** * IndexController * * @author Dulau Benjamin * @version 0.0.1 */ class IndexController extends Application_Controllers_Action { }
Ensuite dans le layout, je ferai quelquechose du genre :
<?php echo $this->render('fm-truc.phtml'); ?>
Et quelque part dans la vue fm-truc.phtml:
<?php echo $this->form; ?>
A+ benjamin.
Hors ligne
Merci beaucoup de ton aide, ça fonctionne parfaitement!
Hors ligne
Pages: 1