[Laravel5.7〜7]Laravelでコントローラ名とアクション名を取得

Laravel

Laravelでアクション名って言い方がただしいかはわからんけど、
時々、コントローラ名やアクション名が欲しくなったりする。
例えば、権限でコントローラやアクションを制御したかったりする…

「route\web.php」で、「Route::get(‘/user’, ‘UserController@index’);」の「UserController@index」を @ でちぎって前後を取れればよいわけで、調べたら、「Route::currentRouteAction()」で取れるらしい。

で、「dd(Route::currentRouteAction()」を実行してみると

"App\Http\Controllers\UserController@index"

なるほどね。 @ の後がアクション名、 \ でちぎって最後の文字列がコントローラ名でいけそうね。

$tmp1 = explode("@", Route::currentRouteAction());
$tmp2 = explode('\\', $tmp1[0]);

$actionName = $tmp1[1];           // アクション名
$controllerName = end($tmp2);     // コントローラ名

トレイトかヘルパーに関数作ってあげれば、使いやすいんじゃないかな。

コメント

タイトルとURLをコピーしました