Laravel where 限制路由传递的参数id等
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel where 限制路由传递的参数id等相关的知识,希望对你有一定的参考价值。
上篇文章讲到路由参数
如何限制这个参数呢
比如aaa如何只能传递int类型的数据
可以使用where
Route::get('task/read/id', 'TaskController@read')
->where('id', '[0-9]+');
这样如果再传递非匹配这个正则的数据会直接报错
匹配正则则会正常可以访问
多个参数如何匹配
class TaskController extends Controller
public function index()
return "index";
public function read($id, $name)
return 'id' . $id . 'name:' . $name;
使用数组的方式
Route::get('task/read/id/name', 'TaskController@read')
->where(['id' => '[0-9]+', 'name', '[a-z]+']);
一个id通常规则都是int【0-9】+这个正则往往能满足很多id的类型
我们不需要每个id都给他进行定义可以通过
app->Providers 中的
RouteServiceProvider.php里面的boot方法定义自定义的针对id的做整数0-9之间不限制个数的限制
public function boot()
Route::pattern('id', '[0-9]+');
parent::boot();
我们来测试这个路径
Route::get('index/id', function ($id)
return 'Hello Laravel' . $id;
);
全局被限制了。很难受
有没有办法在局部的id不限制
TaskController新增
public function read_by_any_id($id)
return 'id' . $id ;
web.php新增
Route::get('task/read_by_any_id/id', 'TaskController@read_by_any_id')
->where('id', '.*');
以上是关于Laravel where 限制路由传递的参数id等的主要内容,如果未能解决你的问题,请参考以下文章
如何使用where关键字检查Laravel 5.2路由中的状态参数?
将 ID 从 Laravel show 传递到 Datatables 路由