JMSSerializerBundle смешивает автоматическое обнаружение и явные каталоги?

Можно ли для некоторых бандлов использовать 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"

Метаданные сериализации считываются и правильно применяются.


person Sean Quinn    schedule 13.09.2013    source источник


Ответы (2)


В пути к каталогу была опечатка, должно было быть так:

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

Мне пришлось копаться в FileLocator, чтобы понять, почему файл не загружается.

person Sean Quinn    schedule 14.09.2013
comment
На будущее проверьте findFileForClass внутри класса Meta\Driver\FileLocator - person Daniel P; 15.07.2015

Изменение файлов в каталоге vendors — очень плохая практика. Ответ на то, что вы ищете, здесь:

JMSSerializerBundle. нет контроля над сторонними метаданными

Хотя и поздно :p

person george rizk    schedule 04.07.2015