您能夠使用where
路由實例上的方法約束路由參數的格式。該where
方法接受參數的名稱和定義參數應如何約束的正則表達式:php
如下是官方Laravel文檔中的示例: laravel
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);複製代碼
經過路由,您能夠指定Route :: get('projects / {project_id}','ProjectController @ show'); 正則表達式
可是若是你想讓project_id嚴格地是一個數字呢?express
能夠指定某些變量名稱始終遵循特定模式。例如,您但願全部路由中的project_id都是整數。bash
而後在app / Providers / RouteServiceProvider.php中執行此操做:app
public function boot()
{
Route::pattern('project_id', '[0-9]+');
parent::boot();
}複製代碼
定義模式後,它將使用該參數名稱自動應用於全部路由ide