JMSSerializer和FOSRestBundle - 注释不起作用。 “不存在”

时间:2013-04-26 05:24:50

标签: php symfony data-annotations fosrestbundle jmsserializerbundle

我正在尝试使用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
{
   ...
}

1 个答案:

答案 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取决于您的稳定性设置。   有时也需要两次运行作曲家更新,因为   作曲家解决算法中的一个错误。