Ich benutze zend-expressive und ich möchte Daten von einer Middelware zu einer anderen weitergeben. z.B. in config/routes.php Ich habeWeitergabe von Daten zwischen Middelware
[
'name' => 'v1.item.list',
'path' => '/item',
'allowed_methods' => ['GET'],
'middleware' => [
Api\V1\Action\ItemListAction::class,
Application\Middleware\JsonRenderMiddleware::class
]
],
in Api \ V1 \ Aktion \ ItemListAction ich einige Daten aus Datenbanken preparin und Ich mag
$ itemsList an eine andere Middel passierenpublic function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
$parameters = new ListParameters($request->getQueryParams());
$itemsList = $this->commandBus->handle(new ItemListCommand($parameters));
return $next($request, $response);
}
und in Application \ Middleware \ JsonRenderMiddleware würde ich $ itemsList mögen und Rückkehr im jSON-Format:
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
return new JsonResponse($itemsList);
}
Wie ist der beste Weg? Nur commandBus oder ist eine andere Lösung in diesem Rahmen?
es funktioniert nicht:/$ response-> getAttribute ('list'); gibt immer null zurück, auch wenn ich versuche, es gleich zu bekommen, nachdem ich es in derselben Middleware gesetzt habe. – quentino
Vielleicht kann ich die Idee der Middleware nicht richtig verstehen. Ich dachte, dass ich Middleware wie eine Servicekette verwenden kann, um Daten auf viele Arten zu verarbeiten, um erwartete Daten zu erhalten. Wie in diesem Fall möchte ich verschiedene Middleware verwenden, um z.B. JSON oder HTML-Antwort, aber verwenden Sie diese Middleware, um Daten aus der Datenbank abzurufen. – quentino
es gab einen Fehler, 'getAttribute' muss auf' $ request' aufgerufen werden, nicht auf '$ response' – marcosh