[英]Required_if laravel with multiple value
我有一個這樣的下拉菜單:
<select name="selection">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<input type="text" name="stext">
我想要 laravel 中的以下內容:
public static myfunction(){
$input = \Input::only('selection','stext');
$rule = array(
'selection' => 'required',
'stext' => 'required_if:selection,2,3',
);
$validate = \Validator::make($input,$rule);
}
但如果我選擇選項 1,仍然需要stext
。 為什么? 我該如何解決?
您只需將所有值作為用逗號分隔的參數傳遞:
$rules = array(
'selection' => 'required',
'stext' => 'required_if:selection,2,3'
);
編輯:正如LePhleg answer所指出的,這個驗證有一個最好的語法:
$rule = array(
'selection' => 'required',
'stext' => 'required_if:selection,2,3,
);
下面的舊答案:
我認為 require_if 驗證每次只接受一個值。 嘗試更改您的驗證碼,如下所示:
$rule = array(
'selection' => 'required',
'stext' => 'required_if:selection,2|required_if:selection,3',
);
編輯:檢查 LePhleg 的答案,更干凈。 在不可能的答案時,只需檢查問題,他正在使用相同的方法但沒有奏效。
試試這個
如果單個匹配值然后像這樣使用
'stext' => 'required_if:selection,2'
如果你有多個值,那么就這樣使用(用逗號分隔)
'stext' => 'required_if:selection,2,3'
有關更多信息,請參閱文檔required_if
您可以繼續對 laravel 進行有時驗證。 您可以定義一個自定義閉包,如下例所示
public static myfunction(){
$input = \Input::only('selection','stext');
$rule = array(
'selection' => 'required'
);
$validate = \Validator::make($input,$rule);
$validator->sometimes('stext', 'required', function($input){
return (($input->selection == 1) || ($input->selection == 2));
});
}
您始終可以使用 Rule 類來覆蓋默認行為。 這應該適用於多個值的情況:
use Illuminate\Validation\Rule;
..................
'stext' => Rule::requiredIf(function () {
return in_array(request()->selection,[2,3]);
}),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.