Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Hello.
Je teste les formulaires par zf2 et je rencontre un problème.
Imaginons la définition :
[lang=php] $this->add([ 'name' => 'nom', 'attributes' => [ 'type' => 'text', 'required' => true ], 'options' => [ 'label' => 'nom', ], ]);
alors :
[lang=php] echo $this->formRow($form->get('nom'));
me rend :
[lang=html] <label> <span>nom</span> <input type="text" value="" required="required" name="nom"> </label>
Pas du tout valide.
Si j'ajoute :
[lang=php] echo $this->formLabel($form->get('nom'));
le rendu est :
[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)
Hors ligne
Salut, surcharger les aides de vues qui ne te conviennent pas . Par contre ça m'étonne que le formLabel renvoi l'input avec car l'input est rendu par formInput.
Hors ligne
Ok, la bonne méthode est de définir un id pour le for (ben oui, grossière erreur).
[lang=php] $this->add([ 'id' => 'nom', 'name' => 'nom', 'attributes' => [ 'type' => 'text', 'required' => true ], 'options' => [ 'label' => 'nom', ], ]);
alors :
[lang=php] echo $this->formRow($form->get('nom'));
rend :
[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)
Hors ligne
Il me semble que l'ID tu dois l'écrire dans l'array d' "attributes" de ton élément
[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 :
[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 :
[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