Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-07-2013 12:49:37

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Form labels inclus 2 fois

Hello.

Je teste les formulaires par zf2 et je rencontre un problème.

Imaginons la définition :

Code:

[lang=php]
$this->add([
        'name' => 'nom',
        'attributes' => [
        'type' => 'text',
        'required' => true
        ],
        'options' => [
        'label' => 'nom',
        ],
    ]);

alors :

Code:

[lang=php]
echo $this->formRow($form->get('nom'));

me rend :

Code:

[lang=html]
<label>
<span>nom</span>
<input type="text" value="" required="required" name="nom">
</label>

Pas du tout valide.

Si j'ajoute :

Code:

[lang=php]
echo $this->formLabel($form->get('nom'));

le rendu est :

Code:

[lang=html]
<label for="nom">nom</label>
<label>
<span>nom</span>
<input type="text" value="" required="required" name="nom">
</label>

N'importe quoi...

Vous avez une solution ?

Dernière modification par Bouks (10-07-2013 12:53:00)


22914720

Hors ligne

 

#2 10-07-2013 13:21:02

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Form labels inclus 2 fois

Salut, surcharger les aides de vues qui ne te conviennent pas wink. Par contre ça m'étonne que le formLabel renvoi l'input avec car l'input est rendu par formInput.

Hors ligne

 

#3 10-07-2013 14:12:12

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Form labels inclus 2 fois

Ok, la bonne méthode est de définir un id pour le for (ben oui, grossière erreur).

Code:

[lang=php]
$this->add([
            'id' => 'nom',
        'name' => 'nom',
        'attributes' => [
        'type' => 'text',
        'required' => true
        ],
        'options' => [
        'label' => 'nom',
        ],
    ]);

alors :

Code:

[lang=php]
echo $this->formRow($form->get('nom'));

rend :


Code:

[lang=html]
<label for="nom">nom</label>
<input type="text" value="" required="required" id="nom" name="nom">

Dernière modification par Bouks (10-07-2013 15:45:28)


22914720

Hors ligne

 

#4 11-07-2013 16:33:45

Vishnu
Nouveau membre
Date d'inscription: 11-07-2013
Messages: 4

Re: Form labels inclus 2 fois

Il me semble que l'ID tu dois l'écrire dans l'array d' "attributes" de ton élément

Code:

[lang=php]
$this->add(array{            
        'name' => 'nom',
        'attributes' => array{
        'type' => 'text',
        'required' => true,
        'id' => 'nom',
        },
        'options' => array{
        'label' => 'nom',
        },
    });

Et pour ne pas afficher l'input et le label dans un <label> tag, tu peux utiliser :

Code:

[lang=php]
echo $this->formLabel($form->get('nom')).$this->formElement($form->get('nom'));

Si ça peut complèter un peu ta réponse.

EDIT:

Petite précision, si vous utilisez la méthode formElement(). Les messages d'erreurs pour cet élément ne s'afficheront plus.
Vous devez utiliser en complément :

Code:

[lang=php]
echo $this->formElementErrors($form->get('nom'));

Comme ça vous pouvez positionner comme vous le souhaitez vos messages d'erreurs.

Dernière modification par Vishnu (11-07-2013 19:55:31)

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