我正在尝试使用ExclusionPolicy但是我不断收到“注释不存在或无法自动加载”错误。
以下是抛出的确切错误:
[语义错误]注释 类中的“@JMS \ SerializerBundle \ Annotation \ ExclusionPolicy” Acme \ DemoBundle \ Entity \ Attributes不存在,或者不存在 自动加载。
我的代码如下:
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
{
...
}
答案 0 :(得分:10)
您的问题是由使用错误的命名空间引起的。
而不是:
use JMS\SerializerBundle\Annotation\ExclusionPolicy;
use JMS\SerializerBundle\Annotation\Expose;
应该是:
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
注意“捆绑”消失了。在Ver 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取决于您的稳定性设置。 有时也需要两次运行作曲家更新,因为 作曲家解决算法中的一个错误。