laravel 如何验证等于变量

laravel how to validate as equal to a variable

在 laravel 验证(注册)中我想将其中一个字段与 php 变量进行比较(它应该等于那个)

我该怎么做?

protected function validator(array $data)
{

    return Validator::make($data, [
        'name' => 'required|max:255',
        'phone' => 'required|min:10|max:11|unique:users',
        'email' => 'required|email|max:255',
        'password' => 'required',
        'password_confirmation' => 'required',
        'user_captcha' => 'required'
    ]);
}

您可以像这样对名称字段执行此操作:

$variable = "something"
return Validator::make($data, [
    'name' => [
        'required',
        Rule::in([$variable]),
    ],
    'phone' => 'required|min:10|max:11|unique:users',
    'email' => 'required|email|max:255',
    'password' => 'required',
    'password_confirmation' => 'required',
    'user_captcha' => 'required'
]);

记得导入规则Class(使用Illuminate\Validation\Rule;)

您可以在以下位置获取更多信息:https://laravel.com/docs/5.4/validation#rule-in

编辑

根据@patricus 的建议,您还可以连接变量

$variable = "something"
return Validator::make($data, [
    'name' => 'required|in:'.$variable,
    'phone' => 'required|min:10|max:11|unique:users',
    'email' => 'required|email|max:255',
    'password' => 'required',
    'password_confirmation' => 'required',
    'user_captcha' => 'required'
]);

EDIT2

如果你有一个数组变量:

$variable = ['one','two'];
return Validator::make($data, [
    'name' => 'required|in:'.implode(",", $variable),
    'phone' => 'required|min:10|max:11|unique:users',
    'email' => 'required|email|max:255',
    'password' => 'required',
    'password_confirmation' => 'required',
    'user_captcha' => 'required'
]);

$variable = ['one','two']
return Validator::make($data, [
    'name' => [
        'required',
        Rule::in($variable),
    ],
    'phone' => 'required|min:10|max:11|unique:users',
    'email' => 'required|email|max:255',
    'password' => 'required',
    'password_confirmation' => 'required',
    'user_captcha' => 'required'
]);