Symfony CurrentUser-Attribut kollidiert mit Doctrine Param Converter

in  Verschiedenes , , ,

Symfony CurrentUser-Attribut kollidiert mit Doctrine Param Converter

Symfony und Doctrine bieten bereits Unterstützung für unterschiedliche native Attribute, welche seit in PHP 8 verwendet werden können. So lassen sich diese unter anderem für ORM-Definitionen (#[ORM\*]), Validierungsregeln (#[Assert\*]), Routen (#[Route]) oder zur Injektion von Service Tags (#[TaggedIterator]) einsetzen.

Das Attribut #[CurrentUser] erlaubt es, das Objekt mit dem aktuell angemeldeten Nutzer direkt als Controller-Argument zu übergeben; ein Beispiel hierfür lässt sich diesem Blog-Artikel entnehmen. Intern wird hierbei ein Argument Value Resolver benutzt.

Ein Problem entsteht dann, wenn das Zielobjekt eine Doctrine-Entität ist und darüber hinaus die Param Converter aktiviert sind. In diesem Fall wird versucht, das Objekt mit Hilfe eines Doctrine Converters aufzulösen, bevor der Argument Value Resolver seinen Job tun kann. Dies funktioniert jedoch nicht, da keine ID in der Route übergeben wird.

Während die perspektivische Lösung dieses Konflikts darin besteht, dass alle Param Converter durch Argument Value Resolver abgelöst werden, findet sich in dem dazugehörigen Symfony-Ticket der Workaround, übergangsweise das Argument mit dem Type Hint UserInterface zu versehen. Hierdurch wird der Param Converter nicht mehr ausgelöst, da es sich nicht um eine Entität handelt.

Weitere Beiträge in Kategorie Verschiedenes

Shopware 6: Korrektur für Links zu rechtlichen Angaben
- In der aktuellen Version von Shopware 6 gibt es einen Bug, der dafür sorgt, dass die Links zu den Datenschutzbestimmungen und den allgemeinen Geschäftsbedingungen im Registrierungsformular nicht …
Vom Teilen und Herrschen: Wie groß sollten Module sein?
- Soeben bin ich über einen Artikel auf Heise gestolpert, der aus meiner Sicht ein paar spannende Impulse setzt: Richtig klein: Hat Modularisierung versagt?. Der Autor beginnt mit klassischen …
Endlich in der GitHub Issues Beta
- Seit knapp eineinhalb Jahren nutzen wir MeisterTask für unser persönliches Task Management im Rahmen von Kundenprojekten sowie eigenen Vorhaben - und sind immer noch begeistert von diesem Tool 😍 Alle …
Symfony 5.4: MicroKernel lernt gängige Konfiguration
- In der kommenden Symfony-Version 5.4 wird häufig wiederkehrender Code zur Kernel-Konfiguration in den MicroKernelTrait verlagert. Dies führt dazu, dass der individuelle Kernel einer Anwendung (in der …
Problem mit zirkulären Abhängigkeiten durch Dekoratoren in Symfony 5.3.7
- Symfony erlaubt das Dekorieren von Services: hierbei wird im Gegensatz zum Überschreiben bestehender Services eine Ummantelung derselben vorgenommen. Immer dann, wenn der ursprüngliche Service …