Bonjour,

Voila depuis quelque jours j'essaye de deployer une application Symfony 3.2 sur mon serveur(ubuntu), mais je rencontre une erreur que je n'arrive pas du tout à resoudre,

Voilà le message qui s'affiche dans mon navigateur

[Semantical Error] The annotation "@Symfony\Component\validator\Constraints\Valid" in property SyspaBundle\Entity\slider::$image does not exist, or could not be auto-loaded.

Quelqu'un pourra t-il m'aider SVP? :(

7 réponses


uzulth
Réponse acceptée

use Symfony\Component\validator\Constraints as Assert;

Tu as oublié une majuscule à Validator.

windows ne fait pas la différence Linux oui ^^

Bonjour,

Avec ces éléments, difficile de t'aider!
Il nous fait plus d'infos, notament la classe SyspaBundle\Entity\slider pour comprendre ce qu'il se passe.
Tu parles de déploiement, ton code fonctionne en local? Si c'est le cas, tu as essayé un composer update sur ton serveur distant (peut-être un composant manquant)?

Je bloque sur la validation de mon Entité en utilisant les annotations.
J'ai vu que ça pouvait venir de mon fichier de configuration mais en vérifiant j'ai bien :

framework : 
    validation:      { enabled: true, enable_annotations: true }

Et dans mon fichier de classe Entity j'ai bien la ligne

use Symfony\Component\Validator\Constraint as Assert;

En faite le projet marche en local sans problème, j'ai fait un composer update sur mon serveur distant et jusqu'à present l'erreur est toujours là

voici le code de mon Entité ci sa peut aidé

<?php

namespace SyspaBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\validator\Constraints as Assert;
/**
 * ssmenu
 *
 * @ORM\Table(name="ssmenu")
 * @ORM\Entity(repositoryClass="SyspaBundle\Repository\ssmenuRepository")
 */
class ssmenu
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @Gedmo\Slug(fields={"name"},separator="-", updatable=true, unique=true)
     * @ORM\Column(length=128)
     */
    private $slug;

    /**
     * @var Image
     * @ORM\OneToOne(targetEntity="Media", cascade={"persist","remove"})
     * @Assert\Valid()
     */
    private $image;

    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Files", mappedBy="ssmenu")
     */
    protected $files;

    public function __construct()
    {
        $this->files = new ArrayCollection();
    }

    /**
     * @ORM\ManyToOne(targetEntity="smenu", inversedBy="ssmenu")
     * @ORM\JoinColumn(name="smenu_id", referencedColumnName="id")
     */
    private $smenu;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * Get id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name.
     *
     * @param string $name
     *
     * @return ssmenu
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name.
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Add file.
     *
     * @param \AppBundle\Entity\Files $file
     *
     * @return ssmenu
     */
    public function addFile(\AppBundle\Entity\Files $file)
    {
        $this->files[] = $file;

        return $this;
    }

    /**
     * Remove file.
     *
     * @param \AppBundle\Entity\Files $file
     *
     * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
     */
    public function removeFile(\AppBundle\Entity\Files $file)
    {
        return $this->files->removeElement($file);
    }

    /**
     * Get files.
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getFiles()
    {
        return $this->files;
    }

    /**
     * Set smenu.
     *
     * @param \SyspaBundle\Entity\smenu|null $smenu
     *
     * @return ssmenu
     */
    public function setSmenu(\SyspaBundle\Entity\smenu $smenu = null)
    {
        $this->smenu = $smenu;

        return $this;
    }

    /**
     * Get smenu.
     *
     * @return \SyspaBundle\Entity\smenu|null
     */
    public function getSmenu()
    {
        return $this->smenu;
    }

    /**
     * Set slug.
     *
     * @param string $slug
     *
     * @return ssmenu
     */
    public function setSlug($slug)
    {
        $this->slug = $slug;

        return $this;
    }

    /**
     * Get slug.
     *
     * @return string
     */
    public function getSlug()
    {
        return $this->slug;
    }

    /**
     * Set image.
     *
     * @param \SyspaBundle\Entity\Media|null $image
     *
     * @return ssmenu
     */
    public function setImage(\SyspaBundle\Entity\Media $image = null)
    {
        $this->image = $image;

        return $this;
    }

    /**
     * Get image.
     *
     * @return \SyspaBundle\Entity\Media|null
     */
    public function getImage()
    {
        return $this->image;
    }
}

Ton assert\Valid() permet donc de vérifier les différentes contraintes sur les champs de ton entité Média, si je comprends bien?
L'erreur se produit à quel niveau? A la soumission du formulaire? Si oui, quel est le code de ton form?

Effectivement mon assert\Valid() permet de vérifier les différentes contraintes. En faite l'erreur n'apparait pas a la soumission du formulaire, mais c'est à l'affichage de la page login que l'erreur apparait et bizarrement ça marche sans problème sur une machine qui tourne sous windows

Bizarre! Tu as essayé de vider le cache Symfony (prod et dev)?

Oh Joliiii @Uzulth!!! Bien vu!
Bravo!