我有一个select
有很多选项,当第一个具有特定值时,我需要另一个select
。
<select id="category" name="category">
<option value="a">Option A</option>
<option value="b">Option B</option>
<option value="c">Option C</option>
<option value="d">Option D</option>
<option value="e">Option E</option>
<option value="f">Option F</option>
</select>
<select id="subcategory" name="subcategory">
<option value="a">Suboption A </option>
<option value="b">Suboption B </option>
<option value="c">Suboption C </option>
<option value="d">Suboption D </option>
<option value="e">Suboption E </option>
</select>
当用户选择选项a,b或f时,我希望第二个select
是必需的。在控制器代码中使用验证输入的下一个规则是否正确?:
$rules = array(
'category' => 'alpha|in:a,b,c,d,e,f|required|size:1',
'subcategory' => 'alpha|
in:a,b,f|
required_if:category,a|
required_if:category,b|
required_if:category,f|
size:1'
);
是否有(另一种或更好的)验证方法?
答案 0 :(得分:25)
或者,您可以像这样使用它。
$rules = array('subcategory' => 'required_if:category,a,b,f');
Laravel将除第一个参数之外的所有参数作为数组,然后使用in_array
方法检查第一个参数的值是否与其余参数匹配。
答案 1 :(得分:1)
您可以注册自定义验证规则以进行检查,例如:
Validator::extend('required_if_anyOfThese', function($attribute, $value, $parameters)
{
// Check here whether any of those Inputs are available and make sure
// what to do, return true or false depending on the result
$attribute is field name "subcategory"
$value will contain the value of the field
$parameters will contain the parameters, array => a,b,f
});
将其用作:
$rules = array('subcategory' => 'required_if_anyOfThese:a,b,f');
详细了解Laravel Website。