Laravel验证可选字段

时间:2017-02-08 09:51:17

标签: php validation laravel-5.3

我目前有一些验证规则如下:

\Route::post("/logError", "LogController@logError");

 //In LogController
 public function logError(Request $request) { 
    $rules = [
        "name" => "required", 
        "message" => "required",
        "level" => "in:info,debug,error"
    ];

    $this->validate($request,$rules);
    // Log the message or do whatever
});

这适用于

等输入
[ "name"=>"Not found", "message" => "Element not found", "level" => "error" ]
[ "name"=>"Not found", "message" => "Element not found" ]` 

然而,它会抛出像

这样的输入的异常
[ "name"=>"Not found", "message" => "Element not found", "level" => "randomgibberish" ]

我的问题是,由于“level”是可选的,是否有内置的方法来验证输入并只删除无效的可选元素而不是抛出验证异常?如果不是,我是否必须覆盖控制器验证方法才能实现此目的?

1 个答案:

答案 0 :(得分:1)

验证器不会修改请求输入数据,您需要在控制器中创建某种中间件或函数来检查输入参数,并将它们与您希望Laravel检查的参数进行比较。

所以,是的,我认为您需要扩展验证方法,或者尝试使用仅执行该操作的辅助函数。