Laravel 5.4 - 存在验证但不是必需的
Laravel 5.4 - exists validation but not required
我的表单中有一个 'array type' 下拉字段,例如:
<select name="category_id[]">
<option value="">Please Select</option>
// more options
</select>
有 3 个相同的字段(因此它是一个数组类型)并且它们都是可选的,但是如果一个值是 selected 它会检查它是否是一个有效值,如下所示:
$rules['category_id'] = 'exists:universities,id';
我遇到的问题是,如果空选项被 selected,它仍然给我一个验证错误,例如 "The selected category is invalid." 如果我 select 一个有效值我没有收到任何错误(正如预期的那样)。
我已经尝试将 nullable
和 sometimes
添加到验证规则中,但它们没有任何区别。作为数组类型字段,我需要做一些不同的事情吗?
如果您使用 "array-like" 名称作为您的 select,您应该像这样使用数组验证:
$rules['category_id.*'] = ['nullable', 'exists:universities,id'];
但如果不是multiselect,你可以把名字改成category_id
让它生效
你能试试吗<option value="" selected disabled>Please select</option>
。另外,当没有选择时,转储 $request->category_id
会给你什么?
我的表单中有一个 'array type' 下拉字段,例如:
<select name="category_id[]">
<option value="">Please Select</option>
// more options
</select>
有 3 个相同的字段(因此它是一个数组类型)并且它们都是可选的,但是如果一个值是 selected 它会检查它是否是一个有效值,如下所示:
$rules['category_id'] = 'exists:universities,id';
我遇到的问题是,如果空选项被 selected,它仍然给我一个验证错误,例如 "The selected category is invalid." 如果我 select 一个有效值我没有收到任何错误(正如预期的那样)。
我已经尝试将 nullable
和 sometimes
添加到验证规则中,但它们没有任何区别。作为数组类型字段,我需要做一些不同的事情吗?
如果您使用 "array-like" 名称作为您的 select,您应该像这样使用数组验证:
$rules['category_id.*'] = ['nullable', 'exists:universities,id'];
但如果不是multiselect,你可以把名字改成category_id
让它生效
你能试试吗<option value="" selected disabled>Please select</option>
。另外,当没有选择时,转储 $request->category_id
会给你什么?