私はzend-expressiveを使用しています。あるミドルウェアから別のミドルウェアにデータを渡したいと思います。例: config/routes.phpの中で私は、データベースからいくつかのデータをpreparinていると私は別のmiddelwareミドルウェア間でデータを渡す
public 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);
}
に$ itemsListを渡したいとAPI \ V1 \アクション\ ItemListActionで
[
'name' => 'v1.item.list',
'path' => '/item',
'allowed_methods' => ['GET'],
'middleware' => [
Api\V1\Action\ItemListAction::class,
Application\Middleware\JsonRenderMiddleware::class
]
],
をしましたアプリケーション\ミドルウェア\ JsonRenderMiddlewareに私は、get $ itemsListをしたいと思いますし、JSON形式で返す:
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
return new JsonResponse($itemsList);
}
がどのように最善の方法は何ですか?このフレームワークではcommandBusまたは他の解決策のみですか?
それは動作しません:/ $ response-> getAttribute( 'list');このミドルウェアで設定した直後にも、いつでもnullを返します。 – quentino
多分私はミドルウェアのアイデアを正しく理解できません。私は、いくつかのサービスチェーンのようなミドルウェアを使用して、さまざまな方法でデータを処理して、期待されるデータを受け取ることができると考えました。この場合のように、私は別のミドルウェアを使用して、 jsonやhtmlレスポンスを使用しますが、この同じミドルウェアを使用してDBからデータを取得します。 – quentino
間違いがありました。 '$ response'ではなく、' getAttribute'を '$ response'で呼び出す必要があります。 – marcosh