在没有外墙的流明中验证路线参数

时间:2015-11-18 04:16:33

标签: php validation laravel lumen

希望你们能帮助我,长时间努力寻找,但找不到答案。

我正在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()方法可能会做我需要的,但我宁愿避免使用外墙。

感谢您的帮助!

1 个答案:

答案 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);