Pregunta

Me gustaría mostrar el mensaje de error en el campo para el que está. Sé cómo poner el mensaje de error en el campo, pero quiero encontrar una forma dinámica de verificar después de la re-submitción, si el valor insertado no es el mensaje de error en sí. Yo uso anotaciones de doctrina. Por ejemplo, si el campo es "Título", el mensaje de error sería "¡El título debe ser lleno!". Entonces, el campo de título ya no está vacío, hago clic en enviar nuevamente y ahora es válido. No quiero comprobar cada campo comoif $entity->getTitle() == "The title must be filled" ...He logrado hacer esto con Divs de error no mostrados en la ramita y jQuery, pero quiero saber si hay una mejor manera de hacerlo desde el controlador. Gracias

¿Fue útil?

Solución

Está preguntando cómo hacer correctamente algo de la manera incorrecta ... Si el valor de entrada no es el valor que desea procesar, nunca debería haber sido el valor para empezar. Dicho esto, estoy seguro de que tienes tus razones ...

Necesitas escuchar FormEvents::BIND_CLIENT_DATA y borre los datos del formulario si coincide con su cadena de error.

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('title');
    $builder->get('title')->addEventListener(
        FormEvents::BIND_CLIENT_DATA,
        function(FilterDataEvent $event)
        {
            if ('The title must be filled' == $event->getData()) {
                $event->setData('');
            }
        },
    );

Si desea aplicar este comportamiento a nivel mundial, debe adjuntar este oyente utilizando una extensión de tipo de formulario que se extienda 'field'. También deberá introspectar todos los posibles mensajes de error de validación para el campo actual utilizando el validador y pasarlos a través del traductor, luego comparar los resultados con los datos del evento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top