Php 如果另一个字段与同一个值不同,则Laravel将该字段验证为某个值

Php 如果另一个字段与同一个值不同,则Laravel将该字段验证为某个值,php,validation,rules,Php,Validation,Rules,在我的表格中,我让用户选择两个国家,现在这两个国家不能为空意味着用户必须在两个不同的选择中选择两个,其中一个字段必须是“england”,如果field1是英格兰,那么field2必须是必需的,但如果field1不等于“england”,那么它是否等于“england”并不重要字段2必须是必需的,并且等于“英格兰” 我想是这样的: $rules =[ 'field1' => '', //if this equals 'england' the field2 is just requir

在我的表格中,我让用户选择两个国家,现在这两个国家不能为空意味着用户必须在两个不同的选择中选择两个,其中一个字段必须是“england”,如果field1是英格兰,那么field2必须是必需的,但如果field1不等于“england”,那么它是否等于“england”并不重要字段2必须是必需的,并且等于“英格兰”

我想是这样的:

$rules =[
  'field1' => '', //if this equals 'england' the field2 is just required
  'field2' => '' // if field1 is different from 'england' than this field must equal 'england'
];

你知道我如何用拉威尔规则做到这一点吗?

我想你不需要规则来解决这种情况。 您可以这样做,(在
$this->validate($rule)
下编写):

laravel中有一个自定义验证,但我认为它适用于1个参数。

我明白你的想法,这会奏效,但我仍然认为在Laravel中有一种规则验证的方法
if ($request->field1 == 'england' && empty($request->field2)) 
   return 'Field2 required when field1 is england';

if ($request->field1 != 'england' && $request->field2 != 'england')
   return 'Field2 must be "england" when field1 different from "england"';