【问题标题】:Required_if laravel with multiple valuerequired_if laravel 具有多个值
【发布时间】:2016-07-16 10:56:42
【问题描述】:

我有一个这样的下拉菜单:

<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 仍然是必需的。为什么? 我该如何解决?

【问题讨论】:

  • 你的代码是真的,检查所有的代码。

标签: php validation laravel laravel-4 controller


【解决方案1】:

编辑: 正如 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的答案,更干净。 在不可能的答案时,只需检查问题,他使用相同的方法但没有工作。

【讨论】:

  • 不。请参阅@LePhleg 答案。方式更清洁和适当。
【解决方案2】:

您有时可以继续对 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));
});
}

【讨论】:

  • 谢谢您的回答先生。但我想让它变得如此简单,我可以。因为我不是 laravel 专家。再次感谢。 :-)
【解决方案3】:

您只需将所有值作为以逗号分隔的参数传递:

$rules = array(
      'selection' => 'required',
      'stext'     => 'required_if:selection,2,3'
);

【讨论】:

    【解决方案4】:

    试试这个

    如果单个匹配值则这样使用

    'stext'     => 'required_if:selection,2'
    

    如果你有多个值然后像那样使用(用逗号分隔)

    'stext'     => 'required_if:selection,2,3'
    

    有关更多信息,请参阅文档required_if

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-27
      • 2021-07-22
      • 1970-01-01
      • 2016-10-13
      • 2021-03-06
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多