|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() |
Salut,
Actuellement, mes formulaires sont validés et les erreurs affichées au-dessus des champs, par ex. "Le champs est obligatoire". Mais ça fait bouger le design et je ne trouve pas ça très propre. Je préférerai voir une liste en haut du formulaire avec tous les messages d'erreur du genre : - Le champs Nom est obligatoire - Le champs Prénom est obligatoire - La date de début doit être antérieure à la date de fin etc. Quelle est la meilleure façon de faire ça avec Symfony 1.4 (si possible sans avoir à personnaliser chaque message d'erreur) ? Merci d'avance |
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Développeur Web Inscription : octobre 2008 Messages : 80 ![]() |
Salut ,
voici un exemple , peut être que ça va t'aider : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
Merci mais non, ça ne fonctionne pas. Il s'agit des global errors uniquement, pas des erreurs sur les champs. Donc si je poste le formulaire sans rien remplir, ça ne passe pas car il y a des champs obligatoires mais ton code n'affiche rien car il n'y a pas de global error.
|
|
|
00
|
|
|
#4 | ||
|
Futur Membre du Club
![]() Mickael Étudiant Inscription : novembre 2008 Messages : 66 ![]() |
Il te suffit en haut de ta page de faire une itération sur ton objet $form et d'effectuer un renderError sur chaque éléments du champs
Code :
|
||
|
00
|
|
|
#5 | |||
|
Membre du Club
![]() |
Citation:
- Le champs Id contient l'erreur suivante : - Le champs Nom contient l'erreur suivante : Champs obligatoire - Le champs Prénom contient l'erreur suivante : Champs obligatoire - Le champs Naissance contient l'erreur suivante : |
|||
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Mickael Étudiant Inscription : novembre 2008 Messages : 66 ![]() |
Oui, comme je le disais j'ai écris ça à la volée, maintenant ce n'est pas bien compliqué, un petit test à chaque itération pour savoir si le champs comporte bien des erreurs, le cas échéant, tu affiches le nom du label et les erreurs qu'il contient.
|
|
00
|
|
|
#7 | ||||||||
|
Membre du Club
![]() |
Mon problème, c'est que j'ai défini des labels personnalisés, pour que, par ex., le label du champs "prenom" soit "Prénom" et pas "Prenom".
Je les avais défini dans le template _form.php comme ça : Code :
Alors j'ai du commencer par définir mes labels personnalisés au niveau de ClientForm::configure : Code :
Code :
Code :
Ca marche mais c'est un peu compliqué, si qqun a mieux... |
||||||||
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() |
Arg ça pose un nouveau problème... Les messages d'erreur ne sont plus traduits
Là, le message est bien traduit en fonction de ce que j'ai mis dans messages.fr.xml : Code :
Code :
<?php echo $field->getWidget()->getLabel() ?> : <?php echo __( $field->getError() ) ?> |
||
|
|
00
|
|
|
#9 | ||||
|
Futur Membre du Club
![]() Mickael Étudiant Inscription : novembre 2008 Messages : 66 ![]() |
Oula, on va faire ça dans l'ordre :
1) pour les labels il est en effet bien mieux de les configurer à partir de la méthode configure() du formulaire en question, que ce soit à chaque setWidget comme tu as fait, ou par le biais de setLabels pour tous les renommer en un seul appel. 2) Code :
Code :
3) pour ton dernier problème d'I18N : Là sf va chercher la valeur du champs en vérifiant si une traduction est dispo pour la culture employée Code :
<th><?php echo $form['detenteurno']->renderLabel() ?></th> Mais là sf va directement chercher la valeur enregistrer dans ton form donc forcement dans la langue utilisée dans l'écriture de la classe incriminée. (idem pour les erreurs) |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com