AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"

Избавиться от __initializer__, __cloner__, __isInitialized__ при выводе json?

// ...
return $this->json($user);

Но вместе с нужными данными у связанных полей приходят
"__initializer__": null,
"__cloner__": null,
"__isInitialized__": true
  • Вопрос задан
  • 763 просмотра
Решения вопроса 2
Maksclub
@Maksclub
maksfedorov.ru
Ответ написан
Комментировать
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
1. Создать свой normalizer
2. Игнорировать эти атрибуты
return $this->json($user, 200, [], [
    AbstractNormalizer::IGNORED_ATTRIBUTES => ['__initializer__', '__cloner__', '__isInitialized__'],
]);

3. Пробросить это глобально в ObjectNormalizer
// App\Kernel
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
{
    // ...
    $container->addCompilerPass(new class implements CompilerPassInterface {
        public function process(ContainerBuilder $container)
        {
            $container->getDefinition('serializer.normalizer.object')->setArgument(6, [
                AbstractNormalizer::IGNORED_ATTRIBUTES => ['__initializer__', '__cloner__', '__isInitialized__'],
            ]);
        }
    });
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы