Lumenで現在のルートを確認して、ルートによって処理を変える
Lumenで、routeによって処理の可否判定(各routeでのAPIの表示可否など)をしようと思ったら、現在のルートを探す方法が見つからなくてハマったので、解決方法をメモで残します。
公開日:2018年8月27日
LumenでgetCurrentRoute()は使えない
Laravelでは、「getCurrentRoute()」を使うのがポピュラーのようですが、LumenではgetCurrentRoute()がprotectedになっていて読めないようです。
php - How to get current route name? - Stack Overflow
$request->route()で、route設定のどこを通ってきているのかがわかる
$request->route()を呼び出すことで、routeファイル(/route/web.php)で記載したどのルートを通ってきてるのかを判定することができます。
$request->route()
array(3) { [0]=> int(1) [1]=> array(3) { ["as"]=> string(13) "ProductsIndex" ["uses"]=> string(45) "App\Http\Controllers\ProductsController@index" ["middleware"]=> array(3) { [0]=> string(4) "auth" [1]=> string(3) "api" [2]=> string(5) "mente" } } [2]=> array(1) { ["type"]=> string(11) "hogehogehog" } }
ルートによって処理を変える
route名は、配列の最初([0])に入っているようなので、自分の場合は、[0][‘as’]でルートを判定して、処理をするようにしました。
$route_data = $request->route();
if(route_data[0]['as'] === 'ProductsIndex'){
return response()->json('Not Found.', 404);
}
ミドルウェアなどの共通処理をする際に、必要なシーンが出てくるかもしれないので、覚えておくといいですね。
:
新着ノート
-
Gitlabの2段階認証下でコンテナレジストリにPushする方法
gitlab
公開日:2020年12月23日
-
HUGO
公開日:2020年4月27日
新着コード
-
cURLでCloudflare APIでキャッシュを削除する
cloudflare
公開日:2020年5月1日
-
iOS Safariでselectを含む要素にoverflow-y:scrollすると横にスクロールする時の対応
iOS
公開日:2020年4月15日