Estoy desarrollando bajo symfony 2.4 y base de datos SQLServer. En mi entidad defino la longitud máxima de los campos con @Assert\Length(max=50), pero a la hora de hacer el submit del formulario se salta la validación y da un error de base de datos si el campo tiene más de 50 caracteres.
He seguido los ejemplos del libro de Javier Eguiluz, pero a mí no me funciona.
¿Qué puede estar pasando? Gracias de antemano Ana
/* Clase Almacén */ use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; class Almacen { /* Otras declaraciones */ /** * @var string * * @ORM\Column(name="DomCalle_Alm", type="string",length=50, nullable=true) * @Assert\Length(max=50) */ protected $calle; } ------------------------ /* Formulario */ ->add('calle', 'text', array('required' => false))
Respuestas
Tienes activada la validación por anotaciones en el config.yml?
framework: validation: { enable_annotations: true }
@diegotham
@diegotham, sí que la tengo activada. Lo que tengo distinto a los proyectos que he consultado es que yo trabajo con dos entity managers, uno contra MySql y otro contra SQLServer, pero en ninguno, me funcionan los assert.
La parte de framework de mi fichero config.yml es:
framework: #esi: ~ #translator: { fallback: "%locale%" } secret: "%secret%" router: resource: "%kernel.root_dir%/config/routing.yml" strict_requirements: ~ form: ~ csrf_protection: ~ validation: { enable_annotations: true } templating: engines: ['twig'] #assets_version: SomeVersionScheme default_locale: "%locale%" trusted_hosts: ~ trusted_proxies: ~ session: # handler_id set to null will use default session handler from php.ini handler_id: ~ fragments: ~ http_method_override: true
Y la de config_dev.yml
, la siguiente:
framework: router: resource: "%kernel.root_dir%/config/routing_dev.yml" strict_requirements: true profiler: { only_exceptions: false }
Mientras soluciono el problema, voy a limitar la entrada de caracteres mediante HTML, indicándolo en el campo del formulario:
->add('calle', 'text', array('required' => false, 'attr' => array('maxlength' => 50, 'minlength' => 3)))
Gracias
@abmelgarejo