首页 > 解决方案 > 在 Laravel 验证中通过 required_unless 时如何保释

问题描述

我有一个包含这 3 个输入的表单:

  1. 一个名为“room1”的文本输入
  2. 一个复选框,例如:“☑我不需要房间 2”并命名为“oneroom”
  3. 一个名为“room2”的文本输入

默认情况下,用户需要输入两个房间。但是当复选框被选中时,我不需要在required_if:oneroom,null. 我到目前为止的代码:

$validated = $request->validate([
            'room1' => array('required', 'min:3'),
            'room2' => array('bail','required_if:oneclass,null', 'min:3',),
        ]);

*为了这个问题,这个代码被简化了。原始表单有更多具有相同问题的字段

当复选框被选中并且 room2 为空时,required_if规则被通过,因此它不会保释和检查min:3。但此时我需要 Laravel 保释而不是检查min:3。当未选中该复选框时,它会执行应有的操作并生成错误,指出如果未选中一个房间,则 room2 不能为空

有什么方法可以实现我正在尝试做的事情,而无需验证规则之外的任何其他代码?

如果您需要我澄清问题,请发表评论

标签: phplaravellaravel-validation

解决方案


用这个:

'room2' => array('exclude_if:oneclass,value', 'min:3')

(用 html 中设置的任何值替换值)。这将从验证中排除 room2,并且不会根据任何其他规则生成任何错误消息。文档


推荐阅读