Soy nuevo en el framework web de Symfony 2 y estoy luchando con una tarea de validación muy básica. Tengo un modelo de entidad Post
que tiene un miembro slug
, que utilizo para construir el enlace a la publicación. En Post.orm.yml
definí unique: true
y también quiero incluir esta restricción como validador.Se ignora el archivo de validación YML
He creado un archivo validation.yml
:
# src/OwnBundles/BlogpostBundle/Resources/config/validation.yml
OwnBundles\BlogpostBundle\Entity\Post:
properties:
slug:
- NotBlank: ~
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: slug
La función de creación en mi controlador es bastante simple:
public function addAction(Request $request)
{
$post = new Post();
$form = $this->createForm(new PostType(), $post);
if($request->getMethod() == 'POST')
{
$form->bind($request);
if($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
return $this->redirect(
$this->generateUrl('own_bundles_blogpost_homepage')
);
}
}
return $this->render(
'OwnBundlesBlogpostBundle:Default:add.html.twig',
array(
'title' => 'Add new blogpost',
'form' => $form->createView(),
)
);
}
El pageflow básica funciona bien, puedo añadir mensajes y verlos, pero si duplico un título de la publicación para probar mi validación, arroja una excepción: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'duplicate-slug' for key 'UNIQ_FAB8C3B3989D9B62'
. He estado escaneando la documentación durante bastante tiempo, pero no pude averiguar por qué mi $form->isValid()
devuelve true
.
mi config.yml dice: 'framework: validation: {enable_annotaciones: true}'; Supuse que esto permite la validación, y estaba equivocado ... Gracias por la ayuda rápida, no sé por qué no pude encontrar esto. – nijansen
Tiene que usar ambos parámetros si quiere usar anotaciones también. Edité mi respuesta. – AlterPHP
Gracias, he actualizado mi configuración en consecuencia. Ahora funciona como un encanto! – nijansen