我遇到了嵌套条件验证规则的问题。
class StoreRequest extends Request
{
public function authorize(){
return true;
}
public function rules(){
return [
'type_id' => 'required|integer',
'external_id' => 'required_if:type_id,==,3|integer',
];
}
}
事实上,我想: - 仅当 type_id 等于 3 时才检查 external_id - 并检查它是否为整数。
当我发布我的表单时,当我选择一个等于 3 的 type_id 时规则起作用。但是如果我选择另一个 type_id,比如 1 或 2,验证不会通过:
external_id 必须是整数。
我尝试添加可空条件,但 required_if 不再起作用
你有什么想法吗?
原文由 kesm0 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的规则执行两项相互独立的检查;仅仅因为当
type_id
!= 3 时不需要external_id
字段,并不意味着忽略整数检查。您正在寻找的是 条件规则,它可以让您更好地控制何时执行检查,例如:
使用表单验证时,您可以通过重写
getValidatorInstance()
方法来访问底层验证器实例: