Skip to content

[LiveComponent] circular reference exception with nested component #831

@fGuix

Description

@fGuix

Hi,

Since this commit, one of my nested component is not working anymore with a circular reference exception.

My nested component is called like this:

{{ component('article-list-item',{
    article: article
}) }}

'article' is build in the parent component and is an entity.

I configured the liveprops attributes like this :

    #[LiveProp(useSerializerForHydration: true, serializationContext: ['groups'=> ['article-list']], updateFromParent: true)]
    public Article $article;

The group 'article-list' is defined in my entity to avoid circular reference, but when debugging, the context seems to be ignored on calling AddLiveAttributesSubscriber->getLiveAttributes().

The exception stack trace

Symfony\Component\Serializer\Exception\
CircularReferenceException
A circular reference has been detected when serializing the object of class "App\Entity\Article" (configured limit: 1).

in vendor/symfony/serializer/Normalizer/AbstractNormalizer.php (line 200)
in vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php -> handleCircularReference (line 155)
in vendor/symfony/serializer/Debug/TraceableNormalizer.php -> normalize (line 45)
in vendor/symfony/serializer/Serializer.php -> normalize (line 152)
in vendor/symfony/serializer/Serializer.php -> normalize (line 170)
in vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php -> normalize (line 216)
in vendor/symfony/serializer/Debug/TraceableNormalizer.php -> normalize (line 45)
in vendor/symfony/serializer/Serializer.php -> normalize (line 152)
in vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php -> normalize (line 216)
in vendor/symfony/serializer/Debug/TraceableNormalizer.php -> normalize (line 45)
in vendor/symfony/serializer/Serializer.php -> normalize (line 152)
in vendor/symfony/serializer/Serializer.php -> normalize (line 170)
in vendor/symfony/serializer/Debug/TraceableSerializer.php -> normalize (line 76)
in vendor/symfony/ux-live-component/src/Util/FingerprintCalculator.php -> normalize (line 49)
in vendor/symfony/ux-live-component/src/Util/LiveControllerAttributesCreator.php -> calculateFingerprint (line 80)
in vendor/symfony/ux-live-component/src/EventListener/AddLiveAttributesSubscriber.php -> attributesForRendering (line 89)
in vendor/symfony/ux-live-component/src/EventListener/AddLiveAttributesSubscriber.php -> getLiveAttributes (line 55)
in vendor/symfony/event-dispatcher/Debug/WrappedListener.php -> onPreRender (line 116)
in vendor/symfony/event-dispatcher/EventDispatcher.php -> __invoke (line 206)
in vendor/symfony/event-dispatcher/EventDispatcher.php -> callListeners (line 56)
in vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php -> dispatch (line 127)
in vendor/symfony/ux-twig-component/src/ComponentRenderer.php -> dispatch (line 105)
in vendor/symfony/ux-twig-component/src/ComponentRenderer.php -> preRender (line 58)
in vendor/symfony/ux-twig-component/src/ComponentRenderer.php -> render (line 51)
in vendor/symfony/ux-twig-component/src/Twig/ComponentExtension.php -> createAndRender (line 58)
in var/cache/dev/twig/84/8490c051c83aa9f0658111f825fb52ce.php -> render (line 74)
in vendor/twig/twig/src/Template.php -> doDisplay (line 394)
in vendor/twig/twig/src/Template.php -> displayWithErrorHandling (line 367)
in vendor/twig/twig/src/Template.php -> display (line 379)
in vendor/twig/twig/src/TemplateWrapper.php -> render (line 40)
in vendor/twig/twig/src/Environment.php -> render (line 280)
in vendor/symfony/ux-twig-component/src/ComponentRenderer.php -> render (line 61)
in vendor/symfony/ux-twig-component/src/ComponentRenderer.php -> render (line 51)
in vendor/symfony/ux-twig-component/src/Twig/ComponentExtension.php -> createAndRender (line 58)
in var/cache/dev/twig/e3/e38e0e52e30f6c3ad0aea4a4ca64d737.php -> render (line 91)
in vendor/twig/twig/src/Template.php -> block_main (line 171)
in var/cache/dev/twig/a4/a4677bb6829e0dc73909cbd81f897b4d.php -> displayBlock (line 82)
in vendor/twig/twig/src/Template.php -> block_body (line 171)
in var/cache/dev/twig/2b/2b5176e928a44eb9b7c91030db1285e2.php -> displayBlock (line 84)
in vendor/twig/twig/src/Template.php -> doDisplay (line 394)
in vendor/twig/twig/src/Template.php -> displayWithErrorHandling (line 367)
in var/cache/dev/twig/a4/a4677bb6829e0dc73909cbd81f897b4d.php -> display (line 49)
in vendor/twig/twig/src/Template.php -> doDisplay (line 394)
in vendor/twig/twig/src/Template.php -> displayWithErrorHandling (line 367)
in var/cache/dev/twig/e3/e38e0e52e30f6c3ad0aea4a4ca64d737.php -> display (line 48)
in vendor/twig/twig/src/Template.php -> doDisplay (line 394)
in vendor/twig/twig/src/Template.php -> displayWithErrorHandling (line 367)
in vendor/twig/twig/src/Template.php -> display (line 379)
in vendor/twig/twig/src/TemplateWrapper.php -> render (line 40)
in vendor/twig/twig/src/Environment.php -> render (line 280)
in vendor/symfony/framework-bundle/Controller/AbstractController.php -> render (line 242)
in vendor/symfony/framework-bundle/Controller/AbstractController.php -> renderView (line 253)
AbstractController->render('default/index.html.twig', array())
in src/Controller/IndexController.php (line 30)
in vendor/symfony/http-kernel/HttpKernel.php -> indexLocale (line 163)
in vendor/symfony/http-kernel/HttpKernel.php -> handleRaw (line 74)
in vendor/symfony/http-kernel/Kernel.php -> handle (line 184)
in vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php -> handle (line 35)
in vendor/autoload_runtime.php -> run (line 29)

Am I doing something wrong or is it a bug ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions