Laravel规则验证 - 只有另一个字段具有值

时间:2018-01-25 00:57:29

标签: laravel validation laravel-validation

<input type="checkbox" name="grievance_discipline" value="checked">
<select name="grievance_type">
<option value="_none" selected>- Select One</option>
<option value="suspension">Suspension</option>
</select>

<?php

$this->validate($request,[
  'grievance_type' => 'required_if:grievance_discipline, checked|not_in:_none',
]);

?>

我遇到的麻烦是告诉Laravel只有在另一个字段有值时才使用特定的验证规则。

在示例中,如果检查了grievance_discipline,则需要discipline_type字段(选择列表)。

选择列表的默认选择选项是 - 选择一个 - 值为_none。在验证规则中,_none应该被抛弃,但是如果grievance_discipline复选框的值已经选中,那么它应该只对其进行验证。

请问有人帮我吗?

1 个答案:

答案 0 :(得分:0)

如何将第一个选项设置为禁用,以便用户被强制选择一个值或不提交值,从而优雅地无法通过验证检查。另外,使用required_with代替required_if来检查是否存在其他值。

<input type="checkbox" name="grievance_discipline" value="checked">
  <select name="grievance_type">
  <option disabled selected value>- Select One</option>
  <option value="suspension">Suspension</option>
</select>

然后在PHP中,执行

$this->validate($request,[
    'grievance_type' => 'required_with:grievance_discipline'
]);