Architektur und Request · Frage 10 von 12
Eine Middleware ruft $request->withAttribute('myext.region', $region) auf und danach return $handler->handle($request). Im Controller fehlt das Attribut. Was ist der Fehler?
1 Antwort ist richtig. Mittel
Lösung anzeigen
Lösung
- C withAttribute() gibt einen neuen Request zurück; ohne $request = $request->withAttribute(...) wird der unveränderte Request weitergereicht
Erklärung
PSR-7-Requests sind unveränderlich: Jede with*()-Methode liefert eine geänderte Kopie und lässt das Original unangetastet. Wer das Ergebnis nicht zuweist, reicht den alten Request an den nächsten Handler weiter, und das Attribut geht verloren. Richtig ist $request = $request->withAttribute('myext.region', $region); danach sehen alle folgenden Middlewares und der Controller das Attribut. Eine Anmeldung von Attributen gibt es nicht, und Punkte im Namen sind üblich, der Core nutzt z. B. frontend.user.