Nuevo en Symfony 5.1: Mejoras en los formularios
Nueva opción html5
en ColorType
El campo de formulario ColorType ahora define una opción llamada html5
.
Cuando esa opción es true
, el valor del campo se comprueba para que sea un
color válido según el formato de colores de HTML 5, que es /^#[0-9a-f]{6}$/i
.
Esta funcionalidad fue contribuida por Thomas Calvet en el pull request #36302.
Nueva opción rounding_mode
en PercentType
La nueva opción rounding_mode
del campo de formulario PercentType es útil
cuando se combina con la opción scale
, que define el número de decimales que
se permiten antes de rendondear un valor.
Los posibles valores de rounding_mode
son las constantes definidas en la clase
\NumberFormatter
de PHP (\NumberFormatter::ROUND_CEILING
, \NumberFormatter::ROUND_HALFEVEN
, etc.)
Esta funcionalidad fue contribuida por Vincent Langlet en el pull request #35729.
Contenidos HTML en los labels
Los contenidos HTML se escapan antes de mostrarlos en los <label>
de los
formularios por motivos de seguridad. La nueva opción label_html
permite
evitar esto, lo que es útil cuando se muestran iconos dentro de botones, enlaces,
contenidos HTML en checkbox/radiobutton, etc.
// src/Form/Type/TaskType.php namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; class TaskType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('save', SubmitType::class, [ 'label' => '<i class="far fa-save"></i> Guardar', 'label_html' => true, ]) ; } }
Esta funcionalidad fue contribuida por Przemysław Bogusz en el pull request #31375.
Simplificada la opción reference_date
en TimeType
En el campo de formulario TimeType, cuando indicas diferentes valores para
las opciones model_timezone
y view_timezone
, debes establecer también la
opción reference_date
. En Symfony 5.1, cuando no se define ninguna opción
reference_date
, la opción view_timezone
toma por defecto el valor de la
opción model_timezone
.
Esta funcionalidad fue contribuida por Christian Flothmann en el pull request #35205.
Mejores valores por defecto para la opción inputmode
El atributo inputmode de HTML indica a los navegadores el tipo de dato que el usuario va a introducir en un campo de formulario (ej. un número de teléfono, una dirección de email. un número decimal, etc.)
Symfony ya usa esta opción en campos como UrlType
, pero en Symfony 5.1 hemos
decidido configurar su valor por defecto en otros campos:
inputmode = 'email'
enEmailType
inputmode = 'search'
enSearchType
inputmode = 'tel'
enTelType
Esta funcionalidad fue contribuida por Artem Henvald en el pull request #34986.
Mejoras en ChoiceType
La nueva opción choice_filter
permite filtrar las opciones por defecto
definidas para un campo de formulario:
// src/Form/Type/AddressType.php namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\FormBuilderInterface; class AddressType extends AbstractType { // ... public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('country', CountryType::class, [ // $allowedCountries es una opción definida en este cmapo de formulario // el closure debe devolver TRUE para mantener el valor y FALSE para eliminarlo 'choice_filter' => $allowedCountries ? function ($countryCode) use ($allowedCountries) { return in_array($countryCode, $allowedCountries, true); } : null, ]) ; }
Esta funcionalidad fue contribuida por Jules Pietri en el pull request #35733.
Además, hemos mejorado las funcionalidades internas de los formularios para
cachear las listas de valores en los campos ChoiceType
(ver pull request #30994)
lo que da una mejora de rendimiento de entre el 15% y el 30%.
Por último, hemos añadido una clase AbstractChoiceLoader
que simplifica la
funcionalidad que carga las listas de valores bajo demanda, lo que permite otras
optimizaciones (ver pull request #34550).
Fuente: New in Symfony 5.1: Form improvements
Comentarios
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.