Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initialize proxy objects if necessary #64

Merged
merged 1 commit into from
Sep 13, 2023

Conversation

Alex--C
Copy link
Contributor

@Alex--C Alex--C commented Sep 6, 2023

In some cases, where no property of a lazy-loaded entity is accessed before trying to access/serialize the translations, the bundle will fail with the following error message:
No locale has been set and current locale is undefined.

The issue is that the AssignLocaleListener is not called if an entity is never actually loaded from the database, but only referenced through a doctrine proxy object.

A dirty workaround is to access a property before fetching the translations, so instead of doing

    public function getTitle(): string
    {
        return $this->getTranslation()->getTitle();
    }

We can do the following:

    public function getTitle(): string
    {
        $this->getName(); // Access non-translated property to initialize the proxy and trigger the AssignLocaleListener
        return $this->getTranslation()->getTitle();
    }

Obviously that's not a great workaround. This PR ensures that the proxies are properly initialized by doctrine before trying to load the translations instead by checking if an entity is a non-initialized proxy and, if it is, initialize it first.

@paullla paullla merged commit 09437e2 into Locastic:master Sep 13, 2023
4 checks passed
@paullla
Copy link
Member

paullla commented Sep 13, 2023

Thank you @Alex--C :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants