Symfony2.1: Novedades – Parte 2

Seguimos con las novedades de Symfony2.1. En esta parte veremos nuevos constraints que reemplazan a otros, usar parámetros en las rutas y el nuevo filtro humanize de twig entre otras cosas.

Forms

El placeholder ha cambiado de $$name$$ a __name__ y es configurable mediante prototype_name

Cuando tenemos una colección de formularios y queremos añadir, lo hacemos mediante javascript y el atributo data-prototype del formulario que contiene el HTML necesario, el atributo name de los campos del formulario será algo parecido a esto:

El placeholder __name__ habrá que sustituirlo por un número único incremental mediante javascript. El placeholder se puede modificar con el atributo prototype_name:

Los nombres y el método de los transformers han cambiado

El método prependNormTransformer ahora se llama addModelTransformer y el método appendClientTransformer ha cambiado por addViewTransformer.

Routing

Añadida la posibilidad de usar parámetros en las rutas

Esto permite tener rutas con parámetros configurables globalmente, por ejemplo en un sitio internacionalizado lo normal es tener al principio dos o tres localizaciones y definirlo como requerimientos:

Pero esto hay que indicarlo en todas las rutas y si se quieren añadir nuevos hay que modificarlas todas. La otra opción es configurarlo como parámetro:

Y en config.yml:

Para ver más usos consultar la documentación.

Validation

Renombrado del método isValid a validate, setMessage deprectated y añadido addViolation

El método anteriormente llamado isValid en un constraint validator ahora se llama isValid. Este método no devuelve ningún valor, lo que hace es añadir violaciones al contexto mediante el método addViolation que recibe como primer parámetro el mensaje de error. Se considera que un valor es válido si no se han añadido violaciones al contexto.

Configuration

Valores sucesivos de assets_base_urls se sobrescribirán en lugar de unirse

A diferencia de la mayoría de bloques de configuración, el valor de assets_base_urls se sobrescribirá porque lo típico es definir una url para cada entorno.

Constraints

Count

Permite validar el número mínimo y máximo de elementos en una colección.

Tiene también una opción exactMessage para cuando el min y el max son iguales y el número de elementos no es ese valor.

Email

Se ha añadido la opción checkHost que en el caso que sea true usa la función checkdnsrr para comprobar la validez del registro MX o A o AAAA del host del email dado.

Image

Se han añadido opciones para indicar un tamaño máximo y mínimo:

Length

Este constraint valida el tamaño de una cadena y sustituye a MinLength y MaxLength que se han marcado como deprecated.

Range

Valida que un número está dentro de un rango, sustituye a Min y Max que han sido marcados como deprecated.

UserPassword

Lo vimos en un artículo anterior.

Twig

Se ha añadido el filtro humanize

Convierte un nombre técnico a un formato legible por los humanos sustituyendo guiones bajos por espacios y escribiendo en mayúscula la letra inicial.

Se ha añadido el test selectedchoice

Devolverá true si la opción está seleccionada para el formulario dado.

Symfony2.2

Ahora mismo se está trabajando en la documentación de las nuevas funcionalidades, aquí iremos viendo algunas de ellas por separado. En el blog de Symfony Fabien ya ha ido mostrando varias.