У меня есть сущности в отношении OneToMany:
Прогноз → имеет много → Кирпич (ы)
Я создал сопоставления сериализации для каждого в Resources/config/serializer/Entity.xxx.yml
, где xxx - имя объекта.
Каждый объект имеет политику исключения, установленную для ALL, и некоторые из ее свойств отображаются, например:
Acme\ForecastBundle\Entity\Forecast:
exclusion_policy: ALL
xml_root_name: forecast
properties:
id:
expose: true
type: integer
regionUid:
expose: true
type: string
description:
expose: true
type: string
bricks:
expose: true
type: array<Acme\ForecastBundle\Entity\Brick>
xml_list:
inline: true
entry_name: brick
Когда в моем шаблоне я делаю {{ forecast|serialize|raw }}
, я получаю:
Прогноз → как я и ожидал → только поля с полями сериализованы
Коллекция кирпичей → все свойства сериализованы → кажется, что мой Entity.Brick.yml
игнорируется... почему?
В кирпиче у меня есть только ID и имя выставлено.. но в сериализованном выпуске у меня есть все свойства (created_at, updated_at.. и еще).. почему? Они должны быть исключены командой "исключение_политики: ВСЕ". Кажется, что config для вложенной коллекции не используется.
Acme\ForecastBundle\Entity\Brick:
exclusion_policy: ALL
xml_root_name: brick
properties:
id:
expose: true
type: integer
name:
expose: true
type: string
EDIT:
Да, я очистил кеш после каждого изменения в .yml config
После некоторых предложений я добавил аннотацию @ExclusionPolicy ( "ALL" ) к классу Brick и @Expose на ID, просто чтобы узнать, что произойдет.. и вдруг это сработает! Отображается не только ID, но все как в моей конфигурации YML.
Итак, я удалил аннотации.. и он все еще работает!
Итак, кажется, что добавление аннотаций каким-то образом вынудило сериализатор распознать мою конфигурацию YML. Однако я не знаю, почему. Меня это беспокоит.
Возможно ли, что кеш APC виноват? Я несколько раз удалял кеш-память Symfony2, но APC только несколько.