Nuevo en Symfony 4.4: Campo de formulario WeekType

¿Cuántas semanas tiene un año entero? Si preguntas por ahí, seguramente la mayoría te dirán que 52. Sin embargo, la respuesta correcta es 52 o 53 dependiendo del año. En concreto, cada año tiene de media 52.1775 semanas y el exceso se va acumulando hasta que se añade una semana extra a un año.

Por ejemplo, el año más reciente con 53 semanas fue 2015. El día 31 de diciembre de 2015 se considera parte de la semana 53 de 2015 (formalmente se escribe como 2015-W53) y el 1 de enero de 2016 también se considera parte de la semana 53 de 2015. Sin embargo, tanto el 31 de diciembre de 2019 como el 1 de enero de 2020 son parte de la semana 1 de 2020 (formalmente, 2020-W01).

Todo esto se define en el estándar ISO 8601 y es simplemente uno de los muchos problemas que te encontrarás al trabajar con fechas. Así que mejor que sea Symfony el que se encargue de estos detalles de forma que tu te puedas centrar en lo verdaderamente importante.

En Symfony 4.4 hemos añadido un nuevo campo de formulario llamado WeekType que permite a los usuarios crear y editar información que representa a un número de semana válido según el ISO 8601:

use Symfony\Component\Form\Extension\Core\Type\WeekType;
 
$builder->add('startDateTime', WeekType::class, [
    // usa esto si almacenas la información en forma de cadena (ej. '2011-W17')
    'input' => 'string',
    // usa esto si almacenas la información en forma de array (ej. [2011, 17])
    'input' => 'array',
 
    // muestra la semana como dos <select> para seleccionar el año y la semana
    'widget' => 'choice',
    // muestra un <input type="text"> para escribir el año y la semana
    'widget' => 'text',
    // muestra un <input type="week"> que es soportado por la mayoría de navegadores actuales
    'widget' => 'single_text',
]);

Si los navegadores de tus usuarios lo soportan, lo mejor es que pongas la opción widget a single_text para que el navegador muestre un campo de tipo <input type="week">, que ofrece la mejor experiencia de usuario para seleccionar semanas.

Esta funcionalidad fue contribuida por Damien Fayet en el pull request #32061.


Fuente: New in Symfony 4.4: Week Form Type

Comentarios

Publicada el

8 de noviembre de 2019

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

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