0

auto_detectionサードパーティのモデルの場所を指定してオーバーライドしながら、一部のバンドルに使用することは可能directoriesですか?

過去数日間、 JMSSerializerBundleを使用して、それを理解し、個人的なプロジェクトで動作させようとしてきましたが、サードパーティのメタデータを使用auto_detectionおよび指定する方法はないようです。directories

FOSUserBundle Model.User.ymlシリアライゼーション データを書き込むと、たとえば次のようになります。

FOS\UserBundle\Model\User:
    access_type: property
    exclusion_policy: ALL
    xml_root_name: user
    properties:
        username:
            type:     string
            expose:   true

指定されたディレクトリに配置し、次のauto_detectionように true に設定します。

jms_serializer:
  metadata:
    debug: true
    file_cache:
      dir: "%kernel.cache_dir%/serializer"
    auto_detection: true
    directories:
      FOSUserBundle:
        namespace_prefix: FOS\UserBundle
        path: "@MyBundle/config/serializer/fosuser"

シリアル化メタデータは取得されません。

ただし、同じメタデータ ファイルをFOS/UserBundle/Resources/config/serializer (ベンダー バンドル内) に配置し、構成を次のように変更すると:

jms_serializer:
  metadata:
    debug: true
    file_cache:
      dir: "%kernel.cache_dir%/serializer"
    auto_detection: true
    #directories:
    #  FOSUserBundle:
    #    namespace_prefix: FOS\UserBundle
    #    path: "@MyBundle/config/serializer/fosuser"

シリアル化メタデータが読み取られ、適切に適用されます。

4

2 に答える 2

1

vendors ディレクトリ内のファイルを変更することは、非常に悪い習慣です。あなたが探しているものはここで答えられます:

JMSSerializerBundle。サードパーティのメタデータを制御できない

ちょっと遅いけど :p

于 2015-07-04T18:18:09.613 に答える