0

jmsserializer を介して pre_deserialization で Document の __constructor を実行しようとしていますが、それが機能しない理由がわかりません。

次のような yaml ファイルからシリアライザのメタデータをロードしています。

AppBundle\Document\Campaign:
exclusion_policy: ALL
xml_root_name: campaign
properties:
    id:
        type: string
        expose: true
    slug:
        type: string
        expose: true
    name:
        type: string
        expose: true
callback_methods:
    pre_deserialize: [__construct]

実行を逆シリアル化しようとすると:

$object = $serializer->deserialize($jsonString, 'AppBundle\\Document\\Campaign', 'json');

コンストラクター関数に到達できませんが、イベントを他の使用可能なもの (pre_serialize、post_serialize、および post_deserialize) に変更すると、到達できます。

この特定のイベントの処理に関するコードが欠落していると思いますが、他のイベントに影響を与える同じコードをコピーしようとしても機能しません。イベントディスパッチャーなどに登録されていないようです。

私の環境は次のとおりです。

symfony                2.6.3
jms/serializer         0.16.0
jms/serializer-bundle  0.13.0

ありがとう。

4

1 に答える 1