Symfony JMS序列化程序配置

Symfony JMS序列化程序配置,symfony,configuration,yaml,jmsserializerbundle,jms-serializer,Symfony,Configuration,Yaml,Jmsserializerbundle,Jms Serializer,我在config.yml中使用此选项: # JMSSerializer Configuration jms_serializer: #parameters: #jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy metadata: cache: file debug: "%kern

我在config.yml中使用此选项:

# JMSSerializer Configuration
jms_serializer:
    #parameters:
        #jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy
    metadata:
        cache: file
        debug: "%kernel.debug%"
        file_cache:
            dir: "%kernel.cache_dir%/serializer"
        auto_detection: true
        directories:
            AppBundle:
                namespace_prefix: "AppBundle"
                path: "%kernel.root_dir%/config/serializer/AppBundle"
在Entity.Category.yml中:

AppBundle\Entity\Category:
exclusion_policy: ALL
但当我尝试发送请求时,我收到以下错误:

要定义的类AppBundle\Entity\Category需要元数据 在/var/www/test/app/config/serializer/AppBundle/Entity.Category.yml中


如何解决此问题?

看起来您使用
%kernel.root\u dir%
获得的项目文件路径不正确。确保
/var/www/test/app
是项目的正确路径。检查PHP
\uuuu DIR\uuuuu
常量,并尝试用它所表示的内容以及您认为的路径替换“%kernel.root\u DIR%”

此外,与在配置文件中定义排除策略不同,您应该能够像这样注释实体,并根据需要公开内容:

use JMS\Serializer\Annotation as JMS;

/**
 * Class ExampleEntity
 *
 * @JMS\ExclusionPolicy("all")
 * @ORM\Entity()
 */
class ExampleEntity
{
}

已找到JMS批注。

您忘记了第2行的
选项卡。

路径正确,我如何使用yml在没有批注的情况下执行此操作?您使用的symfony版本是什么?如果是4.0或更高版本,则更改
%kernel.root\u dir%
,路径应为
%kernel.root\u dir%/Resources/serializer
。看看这个,我用的是symfony 3.4