パラメータのフォーマットを制約する
正規表現制約
ルートインスタンスのwhereメソッドを使用し、引数に正規表現を指定する。
例)1-12の数字であるパラメータを許可するルート
<?php Route::get('/horoscope/{zodiac_id}', 'Mypage\HoroscopeController@show')->name('mypageHoroscopeDetail')->where('zodiac_id', '[1-12]+');
複数指定の場合▼
<?php Route::get('/horoscope/{zodiac_id}/{zodiac_name}', 'Mypage\HoroscopeController@show') ->name('mypageHoroscopeDetail') ->where(['zodiac_id' => '[1-12]+', 'zodiac_name' => '[a-z]+']);
グローバル制約
指定した正規表現でいつもルートパラメータを制約したい場合は、patternメソッドを使う。
パターンを定義すると、パラメータ名を使用している全ルートで、自動的に提供される。
RouteServiceProviderのbootメソッド▼
<?php public function boot() { Route::pattern('id', '[1-12]+'); parent::boot(); }