簡體   English   中英

required_if laravel 具有多個值

[英]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.

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