Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur Symfony

Erreur: [Semantical Error] The annotation

Sujet résolu
    26 juin 2013 à 17:17:18

    Salut,

    depuis pas mal de temps je cherche a résoudre cette erreur. 

    L'erreur du site : 

    [Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\MinLength" in property Sdz\BlogBundle\Entity\Article::$titre does not exist, or could not be auto-loaded.

    mon code:

    // src/Sdz/BlogBundle/Entity/Article.php
    
     
    
    namespace Sdz\BlogBundle\Entity;
    
     
    
    use Doctrine\ORM\Mapping as ORM;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    use Doctrine\Common\Collections\ArrayCollection;
    
    use Gedmo\Mapping\Annotation as Gedmo;
    
     
    
     
    
    /**
    
     * Sdz\BlogBundle\Entity\Article
    
     *
    
     * @ORM\Table()
    
     * @ORM\Entity(repositoryClass="Sdz\BlogBundle\Entity\ArticleRepository")
    
     * @ORM\HasLifecycleCallbacks()
    
     */
    
    class Article
    
    {
    
      /**
    
       * @var integer $id
    
       *
    
       * @ORM\Column(name="id", type="integer")
    
       * @ORM\Id
    
       * @ORM\GeneratedValue(strategy="AUTO")
    
       */
    
      private $id;
    
     
    
      /**
    
       * @var date $date
    
       *
    
       * @ORM\Column(name="date", type="date")
    
       * @Assert\DateTime()
    
       */
    
      private $date;
    
     
    
      /**
    
       * @var string $titre
    
       *
    
       * @ORM\Column(name="titre", type="string", length=255)
    
       * @Assert\MinLength(10)
    
       */
    
      private $titre;
    
         
    
      /**
    
       * @var text $contenu
    
       *
    
       * @ORM\Column(name="contenu", type="text")
    
       * @Assert\NotBlank()
    
       */
    
      private $contenu;
    
         
    
      /**
    
       * @var string $auteur
    
       *
    
       * @ORM\Column(name="auteur", type="string", length=255)
    
       * @Assert\MinLength(2)
    
       */
    
      private $auteur;
    
         
    
      /**
    
       * @ORM\OneToOne(targetEntity="Sdz\BlogBundle\Entity\Image", cascade={"persist"})
    
       * @Assert\Valid()
    
       */
    
      private $image;
    
     
    
      /**
    
       * @ORM\Column(name="publication", type="boolean")
    
       */
    
       
    
      private $publication;
    
     
    
     
    
       
    
      /**
    
       * @ORM\Column(type="date", nullable=true)
    
       */
    
      private $dateEdition;
    
       
    
      /**
    
       * @Gedmo\Slug(fields={"titre"})
    
       * @ORM\Column(length=128, unique=true)
    
       */
    
      private $slug;
    
     
    
      
    
     
    
      /**
    
       * @ORM\ManyToMany(targetEntity="Sdz\BlogBundle\Entity\Categorie", cascade={"persist"})
    
       */
    
      private $categories;
    
     
    
      /**
    
       * @ORM\OneToMany(targetEntity="Sdz\BlogBundle\Entity\Commentaire", mappedBy="article")
    
       */
    
      private $commentaires; // Ici commentaires prend un « s », car un article a plusieurs commentaires !
    
     
    
     
    
      public function __construct()
    
      {
    
        $this->date     = new \Datetime;
    
        $this->publication  = true;
    
        $this->categories   = new \Doctrine\Common\Collections\ArrayCollection();
    
        $this->commentaires = new \Doctrine\Common\Collections\ArrayCollection();
    
    }
    
    //... getter et setter
    
     
    
      } 

    mon controlleur:

    // src/Sdz/BlogBundle/Controller/BlogController.php
    
    class BlogController extends Controller
    
    {
    
    //..........
    
    //......
    
    public function testAction()
    
      {
    
        $article = new Article;
    
             
    
        $article->setDate(new \Datetime());  // Champ « date » OK
    
        $article->setTitre('abc');           // Champ « titre » incorrect : moins de 10 caractères
    
        $article->setContenu('');    // Champ « contenu » incorrect : on ne le définit pas
    
        $article->setAuteur('A');            // Champ « auteur » incorrect : moins de 2 caractères
    
             
    
        // On récupère le service validator
    
        $validator = $this->get('validator');
    
             
    
        // On déclenche la validation
    
        $liste_erreurs = $validator->validate($article);
    
     
    
        // Si le tableau n'est pas vide, on affiche les erreurs
    
        if(count($liste_erreurs) > 0) {
    
          return new Response(print_r($liste_erreurs, true));
    
        } else {
    
          return new Response("L'article est valide !");
    
        }
    
      } 
    
    }



    et merci   .

    -
    Edité par meher.php 26 juin 2013 à 18:04:50

    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2013 à 15:00:44

      Bonjour

      Quelle version de Symfony utilises-tu ?

      S'il s'agit de la version 2.3, sache que MinLength n'en fait plus parti (déprécié depuis la version 2.1), tu dois utiliser Length en lieu et place de MaxLength et MinLength.

      Réfère toi à la documentation Symfony:

      http://symfony.com/fr/doc/current/reference/constraints/Length.html#min

      class Participant
      {
          /**
           * @Assert\Length(
           *      min = "2",
           *      max = "50",
           *      minMessage = "Votre nom doit faire au moins {{ limit }} caractères",
           *      maxMessage = "Votre nom ne peut pas être plus long que {{ limit }} caractères"
           * )
           */
           protected $firstName;
      }

      Bonne continuation

      -
      Edité par FrYouri 27 juin 2013 à 15:01:34

      • Partager sur Facebook
      • Partager sur Twitter
        4 juillet 2013 à 14:46:28

        Ca ma ete utile aussi merci !
        • Partager sur Facebook
        • Partager sur Twitter
          11 juillet 2013 à 10:52:46

          Merci beaucoup ! Si winzou passe par là, il faudrait qu'il pense à corriger dans le tutoriel ;)
          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2013 à 2:30:19

            Merci FrYouriiiiiiiiiiiiiii
            • Partager sur Facebook
            • Partager sur Twitter
              18 juin 2014 à 16:06:28

              Parfait! C'est dommage que symfony n'indique pas le coup du deprecated dans ses messages d'erreurs (qui sont très complets pour le reste!)
              • Partager sur Facebook
              • Partager sur Twitter
              Quand on fait ce qu'on aime, on le fait bien!
                23 juillet 2014 à 12:12:42

                Merci! j'ai trop galéré à faire marcher l'exemple de la doc mais avec Assert ça marche bien.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 août 2014 à 15:46:45

                  Merci pour votre réponse

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 août 2014 à 15:47:48

                    Merci bcp pour votre réponse FrYouri
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 octobre 2014 à 9:47:19

                      Génial FrYouri sa vient de me sortir d'une galère.

                      merci merci

                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 mars 2015 à 14:09:45

                        Un grand merci
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Votre réponse est mon progrès.
                          16 juillet 2015 à 13:15:46

                          Bonjour,

                          Merci pour la réponse.

                          La validation fonctionne mais le minMessage que j'ai mis ne s'affiche pas.

                          Please help ! 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 juin 2016 à 11:29:42

                            Oui merci , un sujet utile.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Erreur Symfony

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown