Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-06-2008 09:28:32

Moimeme
Membre
Date d'inscription: 19-04-2007
Messages: 120

[Zend Form] Ou placer la définition des formulaires ?

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

 

#2 30-06-2008 09:49:45

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: [Zend Form] Ou placer la définition des formulaires ?

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

 

#3 30-06-2008 09:58:40

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [Zend Form] Ou placer la définition des formulaires ?

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

 

#4 30-06-2008 13:14:36

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Zend Form] Ou placer la définition des formulaires ?

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

 

#5 30-06-2008 13:29:08

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend Form] Ou placer la définition des formulaires ?

Perso je fais toujours des Zend_Form (sans surcharge) et je les créer dans mes controllers (via des methodes getXxxForm() ).

Code:

/**
     * 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

 

#6 21-07-2008 20:32:08

Mat
Membre
Lieu: Clermont-Ferrand
Date d'inscription: 20-07-2008
Messages: 15
Site web

Re: [Zend Form] Ou placer la définition des formulaires ?

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... smile

Dernière modification par Mat (21-07-2008 20:32:48)

Hors ligne

 

#7 02-09-2008 16:02:49

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Re: [Zend Form] Ou placer la définition des formulaires ?

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

 

#8 04-09-2008 09:37:00

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend Form] Ou placer la définition des formulaires ?

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


----
Gruiiik !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages