Symfony4:注释不存在,或者无法自动加载(Symfony \ Component \ Validator \ Constraints)

时间:2017-12-10 18:18:34

标签: php symfony annotations

我正在研究Symfony4应用程序,我有这个错误:

[语义错误]属性App \ Entity \ Product :: $ brochure中的注释“@Symfony \ Component \ Validator \ Constraints \ NotBlank”不存在,或者无法自动加载。

以下是Product类:

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

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

    /**
     * @ORM\Column(type="decimal", scale=2, nullable=true)
     */
    private $price;

    /**
     * @ORM\Column(type="text")
     */
    private $description;

    /**
     * @ORM\Column(type="string")
     *
     * @Assert\NotBlank(message="Please, upload the product brochure as a PDF file.")
     * @Assert\File(mimeTypes={ "application/pdf" })
     */
    private $brochure;

    public function getBrochure()
    {
        return $this->brochure;
    }

    public function setBrochure($brochure)
    {
        $this->brochure = $brochure;

        return $this;
    }

    public function getId()
    {
        return $this->id;
    }

    public function getName()
    {
        return $this->name;
    }

    public function setName($name)
    {
        $this->name = $name;
    }

    // ... getters & setters for price & description

    public function setPrice($price)
    {
        $this->price = $price;
    }

    public function setDescription($description)
    {
        $this->description = $description;
    }
}

注释“@Symfony \ Component \ Validator \ Constraints \ File”也会出错。 也许,我忘了在Symfony配置一些东西,我不知道。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

也许你应该在作曲家文件中提到,因为在symfony 4中,每个依赖项都会通过flex自动加载和安装

    "require": {
#...
        "symfony/validator": "^3.3",

    },

答案 1 :(得分:3)

这是其中之一"我感到愚蠢"修复了我。我用flex安装了软件包,但仍然出现错误。原因是我输入了symfony文档中的Assert语句示例,但在我相当高的DPI监视器上,反斜杠看起来像一个管道,即: @Assert | NotBlank(),但应该是@Assert \ NotBlank()