tp5 get参数和路由参数获取问题

以下面的路由为例

Route::get('hello/:id','index/test/hello');

在hello方法中执行以下内容

dump(input('get.id'));
dump(input());
dump(request()->get());
dump(request()->get('id'));
dump(request()->param());
dump(request()->param('id'));
dump(request()->route());
dump(request()->route('id'));

返回的结果

null

array (size=1)
  'id' => string '10' (length=2)
  
array (size=0)
  empty
  
null 
  
array (size=1)
  'id' => string '10' (length=2)
  
string '10' (length=2)

array (size=1)
  'id' => string '10' (length=2)
  
string '10' (length=2)

其中

dump(input('get.id'));
dump(request()->get());
dump(request()->get('id'));

这三种获取参数的方式 ,在定义了路由,并且路由中定义了:id 这种变量时 是获取不到参数的


另外下面这种方式可以获取到参数


public function hello($id)

这里输出$id也可以获取到值。但是这里的 $id 必须要和 路由中的 :id 对应 变量必须相同



如果链接后面带参数


比如 域名/hello/10?name=123

使用上面的获取参数的方法 来获取name值 是都可以获取到值的,所以这里我们就需要需要合适的获取参数方法了

测试一下

dump(input());
dump(request()->get());
dump(request()->route());
dump(request()->param());
array (size=2)
  'name' => string '123' (length=3)
  'id' => string '10' (length=2)

array (size=1)
  'name' => string '123' (length=3)

array (size=1)
  'id' => string '10' (length=2)

array (size=2)
  'name' => string '123' (length=3)
  'id' => string '10' (length=2)

如果我们只想要自己定义的路由变量 就需要使用

request()->route()

获取参数

还有我们看到其中的

request()->get()

获取的参数只获得了我们 ? 后面的参数 ,并且在上面的没有添加name时是没有获取到参数的
所以路由里面的:id这种变量 我们不能使用

request()->get()

来获得参数

转载自 简书 tp5 路由参数获取问题

飞行猿博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论