kfp*_*pmg 5 php data-annotations symfony fosrestbundle jmsserializerbundle
我试图使用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
{
...
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*chs 10
您的问题是由使用错误的命名空间引起的.
代替:
use JMS\SerializerBundle\Annotation\ExclusionPolicy;
use JMS\SerializerBundle\Annotation\Expose;
Run Code Online (Sandbox Code Playgroud)
它应该是:
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
Run Code Online (Sandbox Code Playgroud)
注意"Bundle"消失了.在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,具体取决于您的稳定性设置.由于作曲家的求解算法存在错误,有时还需要两次运行作曲家更新.