Symfony2 customize form error messages

13,257

Solution 1

You have to put the template in Resourses/views/ folder of your bundle. For example,

{# Vendor/YourBundle/Resourses/views/form_fields.html.twig #}

{% extends 'form_div_layout.html.twig' %}

{% block form_errors %}
    {# your form error template #}
{% endblock form_errors %}

{# other customized blocks #}

And then in your form page template,

{% extends your:page:layout %}

{% form_theme form  'VendorYourBundle::form_fields.html.twig' %}

 {{ form_errors(form.field) }}
 {# ..... #}

For more option and implementation reference check form theme cookbook entry and default field layout implementation

Solution 2

You can customise all your error messages at once in your template:

<div class="your_new_class">
    {{ form_errors(form) }}
</div>

Or individually (if your field is title for example)

<div class="your_new_class">
    {{ form_errors(form.task) }}
</div>

Solution 3

In symfony3 first call de theme form in config.yml

twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"
form_themes: 
    - 'YourBundle:FormTheme:error.html.twig'

Twig error.html.twig example

{% block form_errors %}
{% spaceless %}
    {% if errors|length > 0 %}
   <div class="alert alert-danger">
        {% for error in errors %}
     <strong>{{ error.message }}</strong>
        {% endfor %}
    </div>
    {% endif %}
{% endspaceless %}
{% endblock form_errors %}
Share:
13,257
Bagbyte
Author by

Bagbyte

Updated on August 07, 2022

Comments

  • Bagbyte
    Bagbyte over 1 year

    can you please help me understand how to customize error messages in a form with Symfony2? I want to change the HTML layout, adding div, class, etc...

    Reading the guide, it gives a piece of code to put in a file called fields_errors.html.twig but it doesn't tells where to put this file and if some extra configuration is needed.

    Can somebody help me?