Symfony 3.0.4 Circular reference detected during serialization with FOSRestBundle
$normalizers->setCircularReferenceHandler(function ($object) { return $object->getId(); });
Just add it after you make the instance if your objectNormalizer()it worl perfectly for me
If you use FosRestBundle, you can use the GROUPS for the serializer. There is an annotation given by FosRestBundle : @FOS\RestBundle\Controller\Annotations\View(serializerGroups={"user"})
Your group can exclude the circular property.
Another idea you can do this. In your app/config/services.yml
circular_reference_handler: public: false class: callback factory: [AppBundle\Serializer\CircularHandlerFactory, getId]serializer.normalizer.object: class: Symfony\Component\Serializer\Normalizer\ObjectNormalizer arguments: ["@serializer.mapping.class_metadata_factory", null, "@serializer.property_accessor"] public: false tags: [serializer.normalizer] calls: - method: setCircularReferenceLimit arguments: [1] - method: setCircularReferenceHandler arguments: ["@circular_reference_handler"]
The factory can be like this:
namespace AppBundle\Serializer;class CircularHandlerFactory{ /** * @return \Closure */ public static function getId() { return function ($object) { return $object->getId(); }; }}