ショコラ
Laravel ルートパラメーターを取得するには?
「\Route::getCurrentRoute()->parameter({ルートパラメーター名},{デフォルト値})」でキメマス。
全て取得するなら「\Route::getCurrentRoute()->parameters()」です。
もっさん先輩
①ルートパラメーターを取得します。
\Route::getCurrentRoute()->parameter({ルートパラメータ名},{デフォルト値})
②ルートパラメーターを全て取得します。
\Route::getCurrentRoute()->parameters()
通常は以下のように、クロージャにパラメーターを定義してルートパラメーターを取得します。
※ルートパラメーターの名前とクロージャのパラメーターの名前は異なっいても大丈夫です。
Route::get('/hello/{name}',function($name){
return $name;
});
しかし、クロージャのパラメーターが決まっている場合にはルートパラメーターを受け取れないので、parameterメソッドで受け取るようにします。
Route::get('/hello/{name}',function(Request $request){
return \Route::getCurrentRoute()->parameter('name');
});
「パラメーター?」で定義されていれば 、デフォルト値を設定して呼び出すようにします。
Route::get('/hello/{name?}',function(Request $request){
return \Route::getCurrentRoute()->parameter('name','mossan');
});
ユーティリティクラス等で以下のようなメソッドを用意してもいいかもしれません。
// ルートパラメーターを取得します。
public static function getRouteParameter( $name, $default = null ):mixed
{
return \Route::getCurrentRoute()->parameter($name,$default);
}
// ルートパラメーターを全て取得します。
public static function getRouteParameters():array
{
return \Route::getCurrentRoute()->parameters();
}