V5.1.14+版本开始,可以在app.php配置文件中自定义默认的变量规则:
'default_route_pattern' => '[\w\-]+',
支持在规则路由中为变量用正则的方式指定变量规则,弥补了动态变量无法限制具体的类型问题,并且支持全局规则设置。使用方式如下:
局部变量规则
局部变量规则,仅在当前路由有效:
// 定义GET请求路由规则 并设置name变量规则
Route::get('new/:name', 'News/read')
->pattern(['name' => '\w+']);
不需要开头添加^或者在最后添加$,也不支持模式修饰符,系统会自动添加。
全局变量规则
设置全局变量规则,全部路由有效:
// 设置name变量规则(采用正则定义)
Route::pattern('name', '\w+');
// 支持批量添加
Route::pattern([
'name' => '\w+',
'id' => '\d+',
]);
组合变量规则
如果你的路由规则比较特殊,可以在路由定义的时候使用组合变量。
例如:
Route::get('item-<name>-<id>', 'product/detail')
->pattern