[英]Different validation rules for input based on another input value from FormRequest rules() method
是否可以根據另一個輸入的值有條件地驗證輸入字段?
例如,有一個輸入type
可以具有letters
或numbers
值,然后有另一個字段包含value
輸入。
如果類型是letters
,我希望value
輸入驗證規則為alpha
,如果類型為numeric
,則為numbers
我已經在rules
方法中使用了 pipe 類型的驗證:
public function rules()
{
return [
"type" => 'required',
"value" => 'required|min:1|max:255',
];
}
你可以使用Rule::when($condition,$rules)
use Illuminate\Validation\Rule;
public function rules()
{
return [
"type" => ['required'],
"value" => ['required','min:1','max:255',
Rule::when($this->type=='letters', ['alpha']),
Rule::when($this->type=='numbers', ['numeric'])
],
];
}
請檢查Complex Conditional Validation ,它是您要求的解決方案。 文檔中已經給出了一個示例,但是您的代碼塊將如下所示。
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'type' => 'required',
]);
$validator->sometimes('value', 'required|min:1|max:255|numeric', function ($input) {
return $input->type == 'numbers';
});
$validator->sometimes('value', 'required|min:1|max:255|alpha', function ($input) {
return $input->type == 'letters';
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.