Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
j'ai un formulaire, avec des validtors sur certains champs.
Lorsque je créer la vue de la manière ci dessous, les validators fonctionnent correctement (required : true par exemple) :
[lang=php]<?php
echo $this->form()->openTag($form);
foreach ($form->getElements() as $element) {
echo $this->formRow($element);
}
echo $this->form()->closeTag($form);
?>Mais lorsque j'écris la vue de cette façon afin de personnaliser mon formulaire, aucuns validators ne fonctionnent, le formulaire se recharge sans afficher les messages d'erreurs :
[lang=php]<?php
echo $this->form()->openTag($form);
echo $this->formHidden($form->get('id'));
echo $this->formLabel($form->get('nom'));
echo $this->formText($form->get('nom')).'<br/><br/>';
echo $this->formLabel($form->get('description'));
echo $this->formTextarea($form->get('description')).'<br/><br/>';
echo $this->formLabel($form->get('prix'));
echo $this->formNumber($form->get('prix')).' euros<br/><br/>';
echo $this->formLabel($form->get('categorie'));
echo $this->formSelect($form->get('categorie')).'<br/><br/>';
echo $this->formLabel($form->get('sub_categorie'));
echo $this->formSelect($form->get('sub_categorie')).'<br/><br/>';
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag($form);
?>Merci
Dernière modification par romsVLM (10-02-2014 11:19:06)
Hors ligne
Salut, le helper formRow appelle les helpers que tu utilises pour customiser l'affichage de ton formulaire en fonction du type de l'élément donc c'est pas lié à l'affichage.
Peux-tu nous donner le code de ton formulaire ?
Hors ligne
aliment.form.config
[lang=php]
<?php
return array(
//ajout d'un champs caché 'id'
array(
'name' => 'id',
'attributes' => array(
'type' => 'hidden',
),
),
//ajout d'un champs texte 'nom' avec son label
array(
'name' => 'nom',
'attributes' => array(
'type' => 'text',
),
'options' =>array(
'label' => 'Nom : '
)
),
//ajout d'un champs texte 'description' avec son label
array(
'name' => 'description',
'attributes' => array(
'type' => 'textarea',
),
'options' =>array(
'label' => 'Description : '
)
),
//ajout d'un champs select 'sous_categorie' avec son label
array(
'name' => 'prix',
'attributes' => array(
'type' => 'number',
'min' => '0',
'max' => '100',
'step' => '0.5', // default step interval is 1
),
'options' =>array(
'label' => 'Prix : '
)
),
//ajout d'un champs select 'categorie' avec son label
array(
'name' => 'categorie',
'type' => 'Zend\Form\Element\Select',
'attributes' => array(
'type' => 'select',
),
'options' =>array(
'label' => 'Categorie : '
)
),
//ajout d'un champs select 'sous_categorie' avec son label
array(
'name' => 'sub_categorie',
'type' => 'Zend\Form\Element\Select',
'attributes' => array(
'type' => 'select',
),
'options' =>array(
'label' => 'Sous categorie : '
)
),
//ajout d'un bouton de validation
array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Valider',
),
),
);Hors ligne
Aïe ça pique un peu là ... Honnêtement t'as été lire la doc officielle sur les formulaires du ZF2 ? Parce que je vois pas où t'as vu qu'il fallait mettre les formulaires dans les fichiers de config ...
De plus, tu remarqueras qu'à certains moment tu mets l'information "type" dans "attributes" et d'autre directement à la racine du tableau. Dans un cas c'est le type html dans l'autre le type d'élément pour le ZF2.
Ensuite pour afficher les erreurs il faut utiliser formElementErrors dans ta vue. Si elles ne sont pas affichés c'est pas pour ça qu'elles n'existent pas. Ca donne quoi le code de ton contrôleur ?
Donc commences par corriger tout ça avec l'aide de la doc, tu devrais déjà y voir plus clair
!
Hors ligne