Я получаю эту ошибку: (прежде чем все было в порядке, но после некоторых изменений это начало появляться)
[Семантическая ошибка] Аннотации "@Expose" в свойстве VswSystem\CmsBundle\Entity\Slider :: $ name никогда не импортировались.
Возможно, вы забыли добавить выражение "use" для этой аннотации?
Код находится здесь:
<?php
namespace VswSystem\CmsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use VswSystem\CmsBundle\Entity\SliderImage;
use Doctrine\Common\Collections\ArrayCollection;
use VswSystem\CmsBundle\Entity\Traits\IdentificationalEntity;
use VswSystem\CmsBundle\Entity\Traits\NamedEntity;
use JMS\Serializer\Annotation\Expose;
/**
* Slider
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="VswSystem\CmsBundle\Entity\Repository\SliderRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Slider
{
use IdentificationalEntity;
use NamedEntity;
/**
* @var SliderImage
* @ORM\ManyToMany(targetEntity="SliderImage", cascade={"persist"}, orphanRemoval=true)
*
*/
protected $slides;
public function __construct()
{
$this->slides = new ArrayCollection();
}
/**
* Get all slides
* @return ArrayCollection
*/
public function getSlides()
{
return $this->slides;
}
}
Код файла NamedEntity:
<?php
namespace VswSystem\CmsBundle\Entity\Traits;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Class NamedEntity
* @package VswSystem\CmsBundle\Entity\Traits
*/
trait NamedEntity
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
* @Assert\NotBlank
* @Assert\Length(min="3")
* @Expose
*/
protected $name;
/**
* Set name
*
* @param string $name
* @return File
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
}
Не могу понять, что не так...
Сообщение об ошибке точно указывает на конкретную ошибку.
Вам нужно опустить аннотацию @Expose
в определении поля $ name или добавить инструкцию use
где добавить ссылку на класс Expose.
Если вы используете Expose
из пакета JMS Serializer, вы должны добавить следующую строку:
use JMS\Serializer\Annotation\Expose;
VswSystem\CmsBundle\Entity\AbstractEntity\File
. Потому что это указано в ошибке ;-)