Семантическая ошибка Symfony

1

Я получаю эту ошибку: (прежде чем все было в порядке, но после некоторых изменений это начало появляться)

[Семантическая ошибка] Аннотации "@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;
    }
}

Не могу понять, что не так...

  • 2
    Почтовый код VswSystem\CmsBundle\Entity\AbstractEntity\File . Потому что это указано в ошибке ;-)
  • 0
    Извините, ошибка была в VswSystem \ CmsBundle \ Entity \ Slider. Я отредактировал сообщение об ошибке
Показать ещё 3 комментария
Теги:

1 ответ

4
Лучший ответ

Сообщение об ошибке точно указывает на конкретную ошибку.

Вам нужно опустить аннотацию @Expose в определении поля $ name или добавить инструкцию use где добавить ссылку на класс Expose.

Если вы используете Expose из пакета JMS Serializer, вы должны добавить следующую строку:

use JMS\Serializer\Annotation\Expose;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню