Hi:
I was trying to implement this example https://api-platform.com/docs/core/content-negotiation#writing-a-custom-normalizer but I'm getting a ServiceCircularReferenceException .
(1/1) ServiceCircularReferenceException
Circular reference detected for service "AppBundle\Serializer\CustomItemNormalizer", path: "AppBundle\Serializer\CustomItemNormalizer -> serializer -> AppBundle\Serializer\CustomItemNormalizer".
in CheckCircularReferencesPass.php (line 69)
at CheckCircularReferencesPass->checkOutEdges(array(object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge)))
in CheckCircularReferencesPass.php (line 72)
at CheckCircularReferencesPass->checkOutEdges(array(object(ServiceReferenceGraphEdge)))
in CheckCircularReferencesPass.php (line 72)
at CheckCircularReferencesPass->checkOutEdges(array(object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge), object(ServiceReferenceGraphEdge)))
in CheckCircularReferencesPass.php (line 72)
at CheckCircularReferencesPass->checkOutEdges(array(object(ServiceReferenceGraphEdge)))
in CheckCircularReferencesPass.php (line 45)
at CheckCircularReferencesPass->process(object(ContainerBuilder))
in Compiler.php (line 143)
at Compiler->compile(object(ContainerBuilder))
in ContainerBuilder.php (line 731)
at ContainerBuilder->compile()
in Kernel.php (line 560)
at Kernel->initializeContainer()
in Kernel.php (line 119)
at Kernel->boot()
in Kernel.php (line 168)
at Kernel->handle(object(Request))
in app_dev.php (line 34)
Please help to fix this problem.
Thanks
Did you solve this? I have the same exact problem.
use ApiPlatform\Core\Serializer\ItemNormalizer;
...
...
public function __construct(ItemNormalizer $normalizer)
{
$this->normalizer = $normalizer;
}
@GonZOO82 thanks
I'm also having this issue and the code provided by @GonZOO82 din't work for me.
[Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException]
Circular reference detected for service "AppBundle\Serializer\CustomItemNormalizer", path: "AppBundle\Serializer\CustomItemNormalizer -> serializer -> AppBundle\Serializer\CustomItemNormalizer".
@mcanepa this is my code
<?php
namespace AppBundle\Serializer;
use ApiPlatform\Core\Serializer\ItemNormalizer;
use Podium\AdminBundle\Model\Seo;
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
class CustomItemNormalizer implements NormalizerInterface, DenormalizerInterface
{
private $normalizer;
public function __construct(ItemNormalizer $normalizer)
{
$this->normalizer = $normalizer;
}
public function denormalize($data, $class, $format = null, array $context = [])
{
#....
return $this->normalizer->denormalize($data, $class, $format, $context);
}
public function supportsDenormalization($data, $type, $format = null)
{
return $this->normalizer->supportsDenormalization($data, $type, $format);
}
public function normalize($object, $format = null, array $context = [])
{
return $this->normalizer->normalize($object, $format, $context);
}
public function supportsNormalization($data, $format = null)
{
return $this->normalizer->supportsNormalization($data, $format);
}
}
app.custom_item_normalizer:
public: false
class: AppBundle\Serializer\CustomItemNormalizer
arguments: [ '@api_platform.serializer.normalizer.item' ]
tags: [ { name: serializer.normalizer } ]
@GonZOO82 My bad!! I didn't save the file properly. Your code it's working
Thanks @GonZOO82
Most helpful comment
@GonZOO82 My bad!! I didn't save the file properly. Your code it's working