簡體   English   中英

基於來自 FormRequest rules() 方法的另一個輸入值的不同輸入驗證規則

[英]Different validation rules for input based on another input value from FormRequest rules() method

是否可以根據另一個輸入的值有條件地驗證輸入字段?

例如,有一個輸入type可以具有lettersnumbers值,然后有另一個字段包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM