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