Je veux personnaliser le traitement des erreurs dans Symfony2 formulaires. Si une erreur s'est produite, le champ de saisie doit avoir une autre classe pour montrer que la valeur d'entrée n'est pas correcte. P>
Comment puis-je faire cela? Je sais que je dois personnaliser le gabarit de rendu, mais je ne sais pas vraiment comment faire cela. Dois-je personnaliser tous les modèles d'entrée? Et comment puis-je vérifier si l'entrée contient des erreurs? P>
4 Réponses :
Vous pouvez utiliser former les thèmes a > et remplacer le thème par défaut. Ex. Voyez comment MopabootStrapBundle Thème Appliquer exactement vous voulez à l'aide de la philosophie de Twitter Bootstrap. P>
Voici ma solution avec un Thème de formulaire personnalisé . J'ai copié le bloc standard Cette solution ajoute la classe d'erreur spécifiée à tous les widgets avec des erreurs. P> widget_attributes code> et ajouté le code entre
{# Ajouter une erreur Démarrer #} code> et
{# Ajouter une erreur de fin d'erreur #} code>. Il vous suffit de remplacer la valeur dans
{% set errorclass = 'erreur'%} code> avec votre classe d'erreur.
Si vous ne voulez pas utiliser de formulaires personnalisés, vous pouvez faire quelque chose comme ceci (j'ai Symfony 2.6 et Bootstrap 3):
Merci pour cela, c'était exactement ce que je cherchais.
comme dit l'utilisation de la forme de formulaire.
Vous pouvez utiliser la macro parent () code> pour éviter le code de double duplication:
{%- block widget_attributes -%}
{% if errors|length > 0 %}
{% set _class = 'has-error' %}
{% if attr.class is defined %}
{% set _class = _class ~ ' ' ~ attr.class|trim %}
{% endif %}
{% set attr = attr|merge({'class': _class}) %}
{% endif %}
{{- parent() -}}
{%- endblock widget_attributes -%}