我已经设置并运行了SonataUserBundle
。JMSSerializerBundle
现在我正在尝试覆盖Application\Sonata\UserBundle\Entity\User.
我用于此配置的 XML 文件的序列化程序配置是由SonataEasyExtendsBundle
in:
生成的Application\Sonata\UserBundle\Resources\config\serializer\Entity.User.xml
,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<serializer>
<!--
This file has been generated by the EasyExtends bundle
( http://sonata-project.org/bundles/easy-extends )
@author <yourname> <youremail>
-->
<class name="Application\Sonata\UserBundle\Entity\User" exclusion-policy="all" xml-root-name="user">
<property name="id" type="integer" expose="true" since-version="1.0" groups="sonata_api_read,sonata_api_write,sonata_search" />
</class>
</serializer>
我还配置app/config/config.yml
为使用该 XML 文件:
jms_serializer:
metadata:
auto_detection: true
directories:
ApplicationSonatUserBundle:
path: @ApplicationSonataUserBundle/Resources/config/serializer
namespace_prefix: Application\Sonata\UserBundle\Model
现在根据配置,当对象被序列化时,我应该只看到 id 字段。但是当我测试这个时,所有的字段都暴露了。这显然是个坏主意。我正在使用FOSRestBundle
它来实现正在使用它的 API 层。如果我运行:
get_class($this->getUser())
//outputs Application\Sonata\UserBundle\Entity\User
FOSUserBundle
使用正确的User
实体也是如此。
我一直在看这个几个小时,找不到问题所在......