Salut,

Plutôt que d'afficher chaque message d'erreur sur chaque champs, j'ai besoin d'afficher tous les messages d'erreur sous forme de liste en haut du formulaire.

Dans les versions précédentes de symfony, je faisais comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php if ($sf_request->hasErrors()): ?>
    <div class="genericError">
        <h1>Erreur</h1>
        <div id="layer66">
            <div class="genericErrorContent">
                    <p><? echo (isset($errorBoxTitle))? $errorBoxTitle : __( "Datas have errors, please correct them :" ) ?></p>
                    <ul>
                        <?php foreach($sf_request->getErrors() as $error): ?>
                            <li><?php echo $error ?></li>
                        <?php endforeach ?>
                    </ul>
            </div><!-- /genericErrorContent -->
        </div><!-- /pour cacher avec le dropdown -->
 
    </div><!-- /genericError -->
<?php endif ?>
Ce code à l'air de marcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php if( $form->hasErrors() || $form->hasGlobalErrors() ) : ?>
 
                <ul class="error_list">
                    <?php foreach( $form->getGlobalErrors() as $name => $error ) : ?>
                        <li><?php echo $name ?> : <?php echo $error ?></li>
                    <?php endforeach ?>
                    <?php $errors = $form->getErrorSchema()->getErrors() ?>
                    <?php if ( count($errors) > 0 ) : ?>
                        <?php foreach( $errors as $name => $error ) : ?>
                            <li><?php echo $name ?> : <?php echo $error ?></li>
                        <?php endforeach ?>
                    <?php endif ?>
                </ul>
 
<?php endif ?>
Ca me donne par exemple :
prix_fabrique : Le champs est obligatoire
Est-ce que c'est la bonne manière de faire ?

Comment faire pour avoir plutôt :
Prix fabrique : Le champs est obligatoire
Merci d'avance