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)
1 2 3 4 5 6 7 8 9 10
| <?php if ( $field->hasError() ) : ?>
<?php if ( $field->getWidget()->getLabel() ) : ?>
<?php echo $field->getWidget()->getLabel() ?> : <?php echo __( $field->getError() ) ?>
<?php else : ?>
<?php echo ucfirst( $field->getName() ) ?> : <?php echo __( $field->getError() ) ?>
<?php endif ?>
<li>
<span></span>
</li>
<?php endif ?> |
Alors pour le test de présence d'erreurs ok, par contre le test suivant n'est-il pas complètement inutile ? d'Autant plus qu'il débouche sur la modification de la casse d'une seule lettre, ce problème d'ordre visual peut être résolue en modifiant directement tous tes labels par l'appel de configure() de ton form et ensuite tu allèges et rend plus lisible ton code comme si dessous :
1 2 3
| <?php if ( $field->hasError() ) : ?>
<?php echo $field->renderLabel() . " " . $field->renderError(); ?>
<?php endif ?> |
(on est dans un template, autant que possible évitons le php à outrance, de 1 test et 4 echo tu ne fais, au final, plus qu'un seul echo, lui même plus digeste)
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
<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.
$field->getWidget()->getLabel()
(idem pour les erreurs)
Partager