希望你们能帮助我,长时间努力寻找,但找不到答案。
我正在Lumen中构建一个API,我有一个指向控制器的GET路由,定义为:
public function mymethod(Request $request, $param1, $param2, $param3)
使用POST / PUT路由,我使用包含的验证器:
$validator = app('validator')->make($request->all(), $rules, $messages, $customAttributes );
在上面概述的GET路由中,dd($ request-> all())返回一个空数组(正如我猜想的那样),有没有办法获取已传递给所有路由参数的数组方法,以便我可以验证它们,而无需编写丑陋和特定的验证规则?
我可以手动完成:
$parameters = [ 'param1' => $param1, 'param2' => $param2, ... ]
但我想知道是否有Laravel方式,看起来像Input :: all()方法可能会做我需要的,但我宁愿避免使用外墙。
感谢您的帮助!
答案 0 :(得分:3)
Input
外观只是$request
变量的外观,因此Input::all()
和$request->all()
基本相同。
但要记住的是,您正在寻找路由参数,而不是查询字符串参数。请求只知道查询字符串参数,因此您确实需要深入到路由对象以获取路由参数。
查看了Lumen代码后,我相信你会想要这样的东西。代码可以链接在一起,我只是把它分成不同的行,以便能够评论每一步。
// get the Illuminate\Http\Request object for the current request
$request = app('request');
// get the route information associated with the current request
$route = $request->route();
// route parameters are the 3rd item in the route info array
$params = $route[2];
// chained code (just for completeness)
$params = app('request')->route()[2];
// validate
$validator = app('validator')->make($params, $rules, $messages, $customAttributes);