5

我正在尝试使用 ExclusionPolicy,但是我不断收到“注释不存在或无法自动加载”错误。

这是抛出的确切错误:

[语义错误] Acme\DemoBundle\Entity\Attributes 类中的注释“@JMS\SerializerBundle\Annotation\ExclusionPolicy”不存在,或者无法自动加载。

我的代码如下:

namespace Acme\DemoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints;
use JMS\SerializerBundle\Annotation\ExclusionPolicy;
use JMS\SerializerBundle\Annotation\Expose;

/**
 * Acme\DemoBundle\Entity\Attributes
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Acme\DemoBundle\Entity\AttributesRepository")
 * 
 * @ExclusionPolicy("all")
 */
class Attributes
{
   ...
}
4

1 回答 1

10

您的问题是由使用错误的命名空间引起的。

代替:

use JMS\SerializerBundle\Annotation\ExclusionPolicy;
use JMS\SerializerBundle\Annotation\Expose;

它应该是:

use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;

注意“捆绑”不见了。在0.11 版中,它被提取到自己的存储库中。

变更日志如下:

  • 命名空间更改

核心库已被提取到一个专门的存储库 schmittjoh/serializer中,以使其更容易在任何类型的 PHP 项目中重用,而不仅仅是在 Symfony2 项目中。这会导致几个命名空间更改。您可以通过执行这些替换(按顺序)来调整您的项目:

  • JMS\SerializerBundle\Serializer -> JMS\Serializer
  • JMS\SerializerBundle -> JMS\Serializer
  • JMS\Serializer\DependencyInjection -> JMS\SerializerBundle\DependencyInjection

  • 依赖变化

根据您的稳定性设置,您可能需要增加 jms/di-extra-bundle 和 jms/security-extra-bundle 的版本。有时由于作曲家求解算法中的错误,还需要运行两次作曲家更新。

于 2013-04-26T05:51:30.030 回答