2

私はセットアップして実行していますSonataUserBundle。 今、私はこの構成に使用している XML ファイルのシリアライザーJMSSerializerBundle構成をオーバーライドしようとしています 。Application\Sonata\UserBundle\Entity\User.SonataEasyExtendsBundleApplication\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同様です。

私はこれを数時間見てきましたが、何が問題なのかわかりません...

4

1 に答える 1