2014-09-06 3 views
-1

Je valide mes données avant de les enregistrer dans la base de données, mais jusqu'à présent, lorsque la validation javascript est désactivée, je ne peux pas détecter si l'objet est valide ou non. Voici comment je le fais:symfony2 La méthode isValid() renvoie toujours vrai

$editForm = $this->createEditForm($post, $category_id, $section_id, $topic_id); 
     $editForm->handleRequest($request); 

if ($editForm->isValid()) { 
      $em->flush(); 
      return $this->redirect($this->generateUrl('topic_show', array('category_id'=> $category_id, 'section_id'=> $section_id, 'id'=> $topic_id))); 
     } 

méthode unfortunatelly retourne isValid() vrai à chaque fois puis-je obtenir l'erreur de MySQL.

J'ai essayé approche différente, tirée de here

$validator = $this->get('validator'); 
      $errors = $validator->validate($post); 

     if (count($errors) > 0) { 
       throw $this->createNotFoundException('Unable to find Post entity.'); 
      /* 
      * Uses a __toString method on the $errors variable which is a 
      * ConstraintViolationList object. This gives us a nice string 
      * for debugging 
      */ 
      $errorsString = (string) $errors; 

      return new Response($errorsString); 
     } 

Mais il est aussi ne fonctionne pas ...

MISE À JOUR

mon attribut 'contenu' qui est à l'origine de l'erreur

+0

Avez-vous des [ 'Constraints'] (http://symfony.com/doc/current/book/validation.html#basic-constraints) dans votre' entité 'ou' FormType'? –

+0

non, il semble que dans symfony tout attribut est requis par défaut – Leo

+0

Non, vous devez utiliser ['NotBlank()'] (http://symfony.com/doc/current/reference/constraints/NotBlank.html) ou ['NotNull()'] (http://symfony.com/doc/current/reference/constraints/NotNull.html) pour rendre le champ obligatoire. –

Répondre

1

Vous devez définir Constraints dans vous r Entity ou vous pouvez le faire dans votre FormTypemanually pour définir des règles de validation pour vos champs.

Voici un exemple

use Symfony\Component\Validator\Constraints as Assert; 

... 

/** 
    * @var string 
    * 
    * @ORM\Column(name="content", type="text") 
    * @Assert\NotBlank(
    *  message = "Your error message here if content is empty"  
    *) 
    */ 
private $content; 
+0

mais je ne veux pas que le contenu soit nullable :) je veux qu'il soit validé pour ne pas être nul – Leo

+0

Puis ajouter des contraintes. –

+0

une idée de comment afficher plus tard ce message? – Leo

Questions connexes