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