7

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?

2
  • Do you want to modify the error message beeing shown, or change markup/rendering of the message? Commented Aug 25, 2012 at 10:30
  • I want to change the rendering, the HTML tags, classes, etc.. Commented Aug 25, 2012 at 10:45

3 Answers 3

5

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

Sign up to request clarification or add additional context in comments.

Comments

1

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>

Comments

1

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 %}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.