エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】route.phpでURLに数値だけや文字だけを対象にしたい【670日目】

routeで引数に取る型を決めたい

/profile/1とか、 /profile/3とかでURLを決めたい。

でも、 /profile/aaとかは404にしたい。

呼び出し先の関数で、 abort(404)とかでもいいけど、
どうせならそもそも数値だけをrouteに設定したい。

whereで固定する

Route::get("profile/{user_id}", "UserController@profile")->where('user_id', '[0-9]+');

これで、user_idに当たる部分が数値だけ受け取れる。

これによって、呼び出し先の関数も

public function profile (int $user_id)
{

}

って書けるから、例外処理を書いたりとか面倒な手間がカットできるよ!