Reputation: 12457
I am using serializer on symfony3.4.
My code is like this below.
$encoders = [new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$jsonContent = $serializer->serialize($place, 'json',[
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
return new JsonResponse($place);
However it returns the error like this,
A circular reference has been detected when serializing the object of class "Proxies\__CG__\App\Entity\PlaceCat" (configured limit: 1)
it looks circular_reference_handler
callback is not invoked.
How can I enabled this callback ??
Upvotes: 2
Views: 197
Reputation: 52513
In Symfony 3.4 the circular reference handler was set by a method Normalizer::setCircularReferenceHandler(callable)
instead of a serialization-context option.
You need to use the following for Symfony 3.4:
$encoder = new JsonEncoder();
$normalizer = new ObjectNormalizer();
$normalizer->setCircularReferenceHandler(function ($object) {
return $object->getName();
});
$serializer = new Serializer([$normalizer], [$encoder]);
Deprecated since version 4.2: The
setCircularReferenceHandler()
method is deprecated since Symfony 4.2. Use thecircular_reference_handler
key of the context instead.
Upvotes: 1