2017-03-08 3 views
0

私のroutes.global.phpには私はこれをルートに持っています。zend expressive - ミドルウェアは、次のものが利用可能かどうかをチェックします。

[ 
     'name' => 'test', 
     'path' => '/test', 
     'middleware' => [App\Action\Test1Action::class, App\Action\Test2Action::class], 
     'allowed_methods' => ['GET'], 
    ], 

そして、私はこれを返しました$ next($ request、new JsonResponse($ data)); Test1Actionクラスの最後で、次のアクションにデータを送信します。

しかし、後で別のアクションがあるかどうかを確認するためにTest1Action内部に方法がありますか?

多分、別の方法があります。私は上記のリターンを行うことができます。

return new JsonResponse($ data);

このように、私はTest1Actionを単独で使うことも、他のアクションの前にプラグインすることもできます。

私はいくつかのオプションを試しましたが、うまくいきませんでした。どんな助けも素晴らしいでしょう。ありがとう。

答えて

1

おそらく、$ nextがヌルであるかどうかを調べることができます。しかし、それは常に設定されるかもしれませんが、私はそれを試みたことはありません。しかし、表現2では常にそれが設定され、代理人に変更されます。また、最後のミドルウェアは常にNotFoundHandlerになります。

アプリケーションを自分で開発するので、ミドルウェアとアクションの順序がわかります。私はTest1Actionミドルウェアにそのことをさせ、属性として$リクエストに結果を追加し、データが設定されているかどうかを次のミドルウェアに把握させます。データが設定されていない場合は、それをスキップして次のミドルウェアを実行してください。それはずっと簡単です。

関連する問題