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 路由

提交表单时使用路由参数传递变量Laravel 5.2

Laravel5如何向闭合函数内传递参数 where function 传参

laravel 路由参数的默认值怎么设置

axios 将参数传递给 laravel 路由