es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los errores de formulario no aparecen en un tema de formulario personalizado con EasyAdmin3.

Sobrescribí mi formulario en EasyAdmin para organizar de manera diferente mi entrada, así que hice lo siguiente:

En mi Crud:

public function configureCrud(Crud $crud): Crud
    {
        return $crud
            ->setPageTitle(Crud::PAGE_INDEX, 'admin.menu.infos')
            ->setFormThemes(['bundles/EasyAdminBundle/crud/company/edit.html.twig'])
            ;
    }

Y en mi Twig:

{% extends '@EasyAdmin/crud/form_theme.html.twig' %}
{% use '@EasyAdmin/symfony-form-themes/bootstrap5_layout.html.twig' %}

{% block form %}
    {{ form_start(form) }}
    <div class="row">
        {{ form_row(form.logo) }}
        {{ form_row(form.phone) }}
        {{ form_row(form.catchphrase) }}
    </div>
    <div class="row">
        {{ form_row(form.businessName) }}
        {{ form_row(form.email) }}
        {{ form_row(form.website) }}
    </div>
    <div class="row">
        {{ form_row(form.companyName) }}
        {{ form_row(form.address) }}
        {{ form_row(form.linkedin) }}
    </div>
    <div class="row">
        {{ form_row(form.siren) }}
        {{ form_row(form.zipcode) }}
        {{ form_row(form.facebook) }}
    </div>
    <div class="row">
        {{ form_row(form.legalForm) }}
        {{ form_row(form.city) }}
        {{ form_row(form.twitter) }}
    </div>
    <div class="row">
        {{ form_row(form.description) }}
    </div>
    {{ form_end(form) }}
{% endblock %}

El formulario es como quería, y cuando lo envío, funciona, pero el problema es cuando comete un error. Por ejemplo, si valido con un valor vacío, en lugar de recibir mis errores de formulario, obtengo un 500.

He intentado diferentes cosas, pero ninguna de ellas funcionó:
– bloque errores:

twig
{{ form_start(form) }}
    {% block form_errors %}
        {{ parent() }}
    {% endblock %}
  • error individual:
twig
{{ form_errors(form.businessName) }}

¿Alguna idea?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la forma en que se manejan los mensajes de error en su sustitución de formulario. Una razón para un error 500 cuando hay errores de formulario es si la validación del formulario no se maneja correctamente.

    Es posible que los mensajes de error no se estén representando porque los errores de validación no se están pasando a la vista. Una cosa que puede intentar es representar explícitamente los errores utilizando la función form_errors () después de cada elemento de formulario, así:

    {{ form_row(form.logo) }}
    {{ form_errors(form.logo) }}
    
    {{ form_row(form.phone) }}
    {{ form_errors(form.phone) }}
    ...
    

    Si esto aún no funciona, puede intentar crear un tema de formulario personalizado que maneje los errores. Puede crear un nuevo archivo twig en su directorio de la aplicación en templates/form_theme.html.twig e incluirlo en su método configureCrud ():

    public function configureCrud(Crud $crud): Crud
    {
        return $crud
            ->setPageTitle(Crud::PAGE_INDEX, 'admin.menu.infos')
            ->setFormThemes([
                'templates/form_theme.html.twig',
                'bundles/EasyAdminBundle/crud/company/edit.html.twig'
            ])
        ;
    }
    

    En su nuevo archivo de tema de formulario, puede manejar los errores de esta manera:

    {% extends '@EasyAdmin/crud/form_theme.html.twig' %}
    {% use '@EasyAdmin/symfony-form-themes/bootstrap_5_layout.html.twig' %}
    
    {% block form_errors %}
        {% if errors|length > 0 %}
            <ul class="list-unstyled">
                {% for error in errors %}
                    <li>{{ error.message }}</li>
                {% endfor %}
            </ul>
        {% endif %}
    {% endblock %}
    

    Esto representará una lista sin ordenar de mensajes de error para el formulario cuando haya errores de validación. Con suerte, una de estas soluciones resolverá el problema con el error 500 cuando hay errores de formulario.

Comments are closed.