您能够使用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