0
我现在有几个验证规则如下:Laravel验证
\Route::post("/logError", "[email protected]");
//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" ]
为输入异常
我的问题是,因为“级别”是可选的,是否有内置的方式来验证输入,并删除opt从它不是有效的元素,而不是抛出一个验证异常?如果不是,我将不得不重写控制器验证方法来实现这一点?
忽略无效输入是一个滑坡。考虑客户端的错字,发送'错误'级别。抑制水平可以使错误隐藏多年,使维护复杂化。如果仍然是你的意图,输入卫生设施不应与验证相结合。我会将规则和getValidationErrors()的结果传递给sanitiser,并在那里修改请求。 –
@AlexBlex我想问题是消毒输入和验证输入纠缠在我脑海中(可能是因为PHP中的filter_var'可以同时执行这两个操作)。我会试着从我的头上解开它们(然后我的代码)。 – apokryfos