Nuevo en Symfony 4.1: mejoras en el validador

Declarada obsoleta la opción checkDNS del validador de URL

En Symfony 4.1, la opción checkDNS (y su opción relacionada dnsMessage) del validador Url se ha declarado obsoleta. Esta opción permitía validar si el host asociado a la URL existía realmente. Internamente utiliza la función checkdnsrr() de PHP y se ha declarado obsoleta (y será eliminada en Symfony 5.0) porque los resultados no son totalmente fiables.

No se proporciona ninguna alternative, así que si quieres seguir usando esta validación, tendrás que crear un validador propio que haga uso de la función checkdnsrr() de PHP.

Esta funcionalidad fue contribuida por Roland Franssen en el pull request #25516.

El validador Expression admite valores arbitrarios

En Symfony 4.1, el validador Expression acepta una nueva opción llamada values que permite pasar valores arbitrarios que puedes utilizar en las expresiones:

use Symfony\Component\Validator\Constraints\Expression;
 
$constraint = new Expression([
    'expression' => 'value + mi_valor == 2',
    'values' => [
        'mi_valor' => 1,
    ],
]);

Esta funcionalidad fue contribuida por Gabriel Ostrolucký en el pull request #25504.

Añadida una opción canonicalize en el validador Locale

En Symfony 4.1, el validador Locale define una nueva opción booleana llamada canonicalize. Si es true, el locale se transforma en su valor canónico antes de validarlo.

Por ejemplo, un valor como FR-fr.utf8 se transforma en fr_FR, el valor UZ-cYRL-uz se transforma en uz_Cyrl_UZ, etc.

use Symfony\Component\Validator\Constraints as Assert;
 
class User
{
    /** @Assert\Locale(canonicalize = true) */
     protected $locale;
}

Esta funcionalidad fue contribuida por Javier Spagnoletti en el pull request #22353.

Añadido soporte para validar URLs sin protocolo

El validador URL incluye la opción protocols para definir los protocolos permitidos en las URLs (por defecto, ['http', 'https']). En Symfony 4.1 hemos añadido una nueva opción booleana llamada relativeProtocol. Si vale true, las ULRs sin protocolo (ej. //example.com) también se consideran válidas:

use Symfony\Component\Validator\Constraints as Assert;
 
class Author
{
    /** @Assert\Url(relativeProtocol = true) */
     protected $bioUrl;
}

Esta funcionalidad fue contribuida por Peter Smeets en el pull request #24308.

Fuente: New in Symfony 4.1: Validator improvements

Comentarios

Publicada el

1 de marzo de 2018

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.