Nuevo en Symfony 4.1: mensajes de ayuda en formularios

Mostrar mensajes de ayuda en algunos campos de formulario es una necesidad muy habitual en las aplicaciones web. Sin embargo, el componente Form no proporciona esta funcionalidad, por lo que tenías que crearte una extensión de formularios como la siguiente:

namespace App\Form\Extension;
 
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
 
class HelpMessageExtension extends AbstractTypeExtension
{
    public function getExtendedType()
    {
        return FormType::class;
    }
 
    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        $view->vars['help'] = $options['help'] ?? '';
    }
 
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(['help' => null]);
    }
}

Y después crearte tu propio tema de formularios para mostrar el mensaje:

{% use "bootstrap_4_layout.html.twig" %}
 
{% block form_row %}
    {# ... #}
 
    {% if form.vars.help ?? false %}
        <div class="form--help">{{ form.vars.help }}</div>
    {% endif %}
{% endblock form_row %}

En Symfony 4.1, todo esto ya no será necesario porque puedes definir el mensaje de ayuda de los campos de formulario mediante su opción help:

// ...
$builder->add('email', null, [
    'help' => 'Make sure to add a valid email',
]);

Y así es como se ve el mensaje cuando utilizas nuestro tema de Bootstrap 4:

Gracias a nuestra apuesta por la inclusión y la diversidad tenemos muy en cuenta la accesibilidad en todo lo que hacemos, así que hemos actualizado los temas de formulario para que incluyan el atributo aria-describedby en los campos que tienen un mensaje de ayuda.

Por último, si personalizas los formularios de Symfony, ahora podrás hacer uso de una nueva función de Twig llamada form_help(), que se une a las conocidas funciones form_row(), form_label(), etc.

Esta funcionalidad fue contribuida por Mathieu Piot en el pull request #26332.

Fuente: New in Symfony 4.1: Form field help

Comentarios

Publicada el

28 de junio de 2018

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.