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