JMSSerializer和FOSRestBundle -注解不起作用.不存在


JMSSerializer and FOSRestBundle - Annotations not working. "Does not exist"

我试图使用排他策略,但我一直得到一个"注释不存在,或不能自动加载"的错误。

下面是抛出的确切错误:

[semantic Error]注释类中的"@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
{
   ...
}

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

代替:

use JMS'SerializerBundle'Annotation'ExclusionPolicy;
use JMS'SerializerBundle'Annotation'Expose;

应该是:

use JMS'Serializer'Annotation'ExclusionPolicy;
use JMS'Serializer'Annotation'Expose;

注意"Bundle"不见了。在Ver 0.11中,它被提取到自己的存储库中。

变更日志如下:

    <
  • 名称空间变化/strong>

核心库已被提取到专用存储库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取决于你的稳定性设置。有时还需要运行两次编写器更新,因为作曲家求解算法中的一个bug。