Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-04-2011 16:16:42

jplec
Nouveau membre
Date d'inscription: 18-04-2011
Messages: 1

[Zend_Form] affichage d'une legend dans un fieldset

Bonjour à tous,

Cela fait peu de temps je me suis mis à étudier le Framework de Zend. Certaines notions m'échappent encore.

L'une d'entre elles concerne l'affichage d'une légende à un Fieldset.

En fait, j'ai codé un formulaire de connexion classique mais la légende ne s'affiche pas.

Voici le code de mon formulaire qui contient 2 champs texte et un bouton :

Code:

        // Nom de l'utilisateur
        $user = new Zend_Form_Element_Text('user');
        $user->setLabel('Nom de l\'utilisateur');
        $user->addFilter('StripTags');
        $user->addFilter('StringTrim');
        $user->addValidator('NotEmpty');
        $user->setRequired(true);
         
        // Libelle du marqueur
        $password = new Zend_Form_Element_Text('password');
        $password->setLabel('Mot de passe');
        $password->addFilter('StripTags');
        $password->addFilter('StringTrim');
        $password->addValidator('NotEmpty');
        $password->setRequired(true);
        
        // Bouton de validation
        $valider = new Zend_Form_Element_Submit('valider');
        $valider->setLabel('Connexion');
        $valider->setAttrib('id', 'boutonvalider');

Voici maintenant les 3 méthodes que j'ai testé pour mettre ces 3 éléméments dans un fieldset :

Code:

        /* Première méthode */
        //$login = new Zend_Form_SubForm(array('legend' => 'Connexion à Completude'));
    //$login->addDecorator(new Zend_Form_Decorator_Fieldset());
    //$login->addElements(array($user, $password, $valider));
        //$this->addSubForm($login, 'required');
        
        /* Seconde méthode */
        //$this->addElements(array($user, $password, $valider));
    //$this->clearDecorators();
    //$this->addDecorator('FormElements')
        //->addDecorator('Fieldset', array('legend' => 'Connexion à Completude'))
        //->addDecorator('Form');

        /* Troisième méthode */
        $deco = new Zend_Form_Decorator_Fieldset();
        $deco->setLegend('Connexion à Completude');
    $this->addDisplayGroup(array($user, $password, $valider), 'display');
    $this->clearDecorators();
    $this->setDisplayGroupDecorators(array('FormElements', $deco));

Quelque soit l'une de ces 3 méthodes, mes 3 éléments sont bien stockés dans un fieldset, mais la légende n'apparait pas.

Si quelqu'un a une solution à proposer... Je suis preneur

A bientôt

Hors ligne

 

#2 23-04-2011 17:07:03

fhebert
Membre
Date d'inscription: 30-11-2010
Messages: 20

Re: [Zend_Form] affichage d'une legend dans un fieldset

J'ai utilisé une variante de ta troisième méthode :

Code:

        # $this est une instance d'une sous-classe de Zend_Form
        $this->addDisplayGroup(
            array('frontCover', 'backCover'),
            'covers'
        );
        $this->getDisplayGroup('covers')->setLegend('Couvertures');

Mais à la réflexion la méthode la plus propre c'est de configurer le contenu de la légende directement sur
le décorateur fieldset un peu comme ta deuxième méthode.

Par contre je ne pense pas que tu aies besoin de changer les décorateurs par défaut (d'autant que tu as oublié
je crois le décorateur qui entoure les éléments dans un dl) du formulaire. Avec un :

Code:

$this->getDecorator('Fieldset')->setLegend('ma légende');

est-ce que ça marche ?

J'ai regardé le code de Zend_Form_Decorator_Fieldset et ta deuxième méthode devrait tout de même fonctionner ?...

Frédéric

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