【发布时间】:2017-04-17 21:12:18
【问题描述】:
让我描述一下我的场景。这是一个类似于我的表格:
<select name="colors">
<option value="1">Dark red</option>
<option value="2">Light red</option>
<option value="3">Dark green</option>
<option value="4">Light green</option>
</select>
<input type="text" name="textbox-field">
<input type="checkbox" name="checkbox-field" value="1">
我想根据在 colors 上选择的值来验证 textbox-field 或 checkbox-field。问题是textbox-field 和checkbox-field 是互斥的,这意味着选择了指定的colors 值后,只需填写其中一个即可。
如果我有一个字段,我可以像这样使用内置的 required_if 规则:
'textbox-field' => "string|required_if:colors,3,4"
但是,我想要实现的是这样的想法,但在最后两个规则之间有一个 OR 运算符:
'textbox-field' => "string|required_if:colors,3,4|required_without:checkbox-field"
'checkbox-field' => "numeric|required_if:colors,3,4|required_without:textbox-field"
是否可以在不使用 OR 逻辑运算符的情况下创建将 required_if 和 required_ 结合起来的自定义验证规则?
【问题讨论】:
-
我知道规则与 and 结合,所以您可以编写自己的验证规则。
-
确实如此,有关如何为这种情况实施自定义验证的任何帮助?是否可以在自定义规则中使用内置验证规则?
-
只是从上面回答我自己的问题,是的,可以在新的自定义验证器中使用内置规则,只要它在扩展
Illuminate\Validation\Validator的类中实现。这样它就可以访问实现所有内置规则的受保护函数,如validateRequiredIf()和validateRequiredWithout。查看下面的代码以获取特定示例。
标签: php validation required laravel-4.2