Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
bonjour à tous,
Afin d'avoir quelque chose de cohérent coté architecture je me demande ou construire mes formulaires avec Zend_Form. Quelle approche avez vous choisis pour la déclaration de vos formulaires ?
Vous les construisez dans vos controllers à la demande ? dans des controllers spécifiques ? dans des classes maisons ? autres ?
Merci d'avance.
Hors ligne
Salut Moimeme !
je me suis posé les mêmes questions que toi.
A ce jour, je déclare mes formulaires dans une classe rangés dans un dossier 'forms' à la racine de mon module
puis j'instancie le formulaire dans le contrôleur que je passe en variable à la vue.
Pour finir dans la vue je fais un simple :
<?php echo $this->form; ?>
Hors ligne
Bonjour,
Pour l'instant les Formulaires*Blabla*.php sont le dossier "models", et quelques bouts de sous formulaires (elements composés + subforms) dans library/My/Form/, aucun dans les controleurs juste les embranchements ($this->_request->isPost ()) ..) qui m'encombrent déjà trop àmha.
Dernière modification par fte (30-06-2008 09:59:48)
Hors ligne
pour moi, c'est dans :
/application/api/formulaires
et dans formulaires j'ai :
/formulaires/decorators/
/formulaires/elements/standard/ (tous les éléments génériques à tous mes formulaires)
/formulaires/elements/profil (tous les éléments déjà personnalisés comme eltNom, eltPrenom...)
/formulaires/elements/ihm (les éléments relatifs au design génériques des formulaires)
/formulaires/forms/ (tous les formulaires)
J'ai choisi de les mettres dans /api, c'est ici que je range toutes mes classes qui n'ont rien à voir avec le MVC à l'exception des helpers
Hors ligne
Perso je fais toujours des Zend_Form (sans surcharge) et je les créer dans mes controllers (via des methodes getXxxForm() ).
/** * Formulaire de login * * @return Zend_Form */ public function getConnectForm() { require_once 'Zend/Form.php'; $inputTxtDecorator = array( 'Label', 'ViewHelper', 'Errors', array('HtmlTag', array('tag' => 'div', 'class'=>'group')) ); $configForm = array( 'id' => 'auth', 'action' => $this->_request->getRequestUri(), 'method' => 'post', 'elementPrefixPath' => array( 'validate' => array( 'prefix' => "Rx_Validate", 'path' => "Rx/Validate/" ) ), 'elements' => array( 'email' => array('text', array( 'label' => $this->view->translate('user.email'), 'validators' => array('EmailAddress'/*, 'EmailExists'*/), 'required' => true, 'decorators' => $inputTxtDecorator )), 'pwd' => array('password', array( 'label' => $this->view->translate('user.pwd'), 'required' => true, 'decorators' => $inputTxtDecorator )), 'rememberMe' => array('checkbox', array( 'label' => $this->view->translate('user.rememberMe'), 'filters' => array('Int'), 'decorators' => array( 'Label', 'ViewHelper', array('HtmlTag', array('tag' => 'div', 'class'=>'group')) ) )), 'connectValid' => array('submit', array( 'label' => $this->view->translate('validate'), 'decorators' => array( 'ViewHelper', ) )) ) ); $form = new Zend_Form($configForm); $form->setTranslator($this->tl); return $form; }
Je procède ainsi car il me semble que ces dans la logique du MVC de "controler de saisie" et donc des s'occuper des éléments en question... bien qu'il y ait des liens avec une certaine logique métier.
Après ca se discute bien sur...
Hors ligne
Salut !
Perso je met la definition de mes formulaires dans des fichiers .ini
Pour chacun de mes modules j'ai un repertoire "config" dans lequel je met un fichier "form.ini"
Chaque formulaire correspond à une section de fichier ini, qui porte le nom du formulaire.
Ex:
application/login/config/form.ini
[classic_login]
method = post
elements.login.type = text
...
Ensuite j'ai fait une classe FormManager qui s'occupe de récuperer et d'instancier le Zend_Form correspondant au formulaire dont j'ai besoin.
Ex d'utilisation :
$form = FormManager::getForm('nom_du_formulaire', 'nom_du_module');
Ca va recupérer la section [nom_du_formulaire] dans le fichier application/nom_du_module/config/form.ini , instancier un objet Zend_Form en lui envoyant la conf correspondante, et me renvoyer cet objet.
J'en profite également pour y faire des traitements que je fais pour tous mes formulaires (ex: ajouter un élément Zend_Form_Element_Token pour protéger les formulaires contres les failles CRSF quand c'est un formulaire en "mode connecté").
voilà, si ça peut servir...
Dernière modification par Mat (21-07-2008 20:32:48)
Hors ligne
Salut Mat,
ta façon de procéder pour gérer les formulaires correspond assez bien à ce que je souhaiterai faire. Par contre, as tu une idée sur le moyen de gérer le multilangue dans les formulaires via ces fichiers ini ??
Faut il dupliquer les fichier ? Ou est il possible de faire intervenir le translator directement dans ou à partir des fichiers ini ?
Cordialement,
Hors ligne
Moi, j'ai un repertoire lib ou je mets mes forms.
Chaque formulaire utilise le module, controller, action pour être identifier
Par exemple :
Form_User_Auth_Login se trouve dans le répertoire lib/Form/User/Auth/Login.php
Tous mes formulaires étendent une classe Form_NomDeMonApp
Cette classe possèdes des attributs protégé sur les decorateurs, initialisation des traductions, ...
Tous se trouve dans lib
On peut trouver aussi par exemple
Form_Decorator_Error
View_Helper_Datesql
Controller/Action/help/getIp.php
Hors ligne
Pages: 1