Пакет сериализатора JMS игнорирует сопоставления сущностей

У меня есть мой Entity.Project.yml файл в My/NamedBundle/Resources/config/serializer/Entity.Project.yml

My\NamedBundle\Entity\Project:
exclusion_policy: ALL
properties:
id:
exclude: true
type: integer

Это полностью игнорируется, и все атрибуты открываются во время сериализации. Что я пропустил?

Документация по этой части, по-видимому, отсутствует без реального примера схемы именования файла или содержимого самого файла yml.

Я очищал кеш 100 раз, пытаясь заставить это работать.

$project = $repo->find(1);
$serializer = SerializerBuilder::create()->build();
$json = $serializer->serialize($project, 'json');

Обновление сериализатора контейнера приводит к ошибке

$serializer = $this->get("jms_serializer")
->configureListeners(function(EventDispatcher $dispatcher) {
$dispatcher->addSubscriber(new MySubscriber($this->container));
})
->addDefaultListeners()
->build();

Попытка вызвать метод «configureListeners» для класса «JMS \ Serializer \ Serializer»

2

Решение

Вы используете JMS Serializer Bundle с Symfony, правильно? Потому что вы можете избежать ручного создания компоновщика каждый раз и просто использовать сервис:

$this->get('jms_serializer')->serialize($project, 'json');

Если вы все еще хотите сделать это вручную, попробуйте указать каталог метаданных YML при создании сериализатора. Даже если ваши файлы отдельных моделей указывают на полный путь вашей сущности, сериализатор все еще не знает, где находится этот каталог. Аннотации не требуют этого, потому что вы уже внутри сущности.

http://jmsyst.com/libs/serializer/master/configuration

$serializer =
JMS\Serializer\SerializerBuilder::create()
->addMetadataDir('My/NamedBundle/Resources/config/serializer')
->build();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]