在Laravel中修改唯一属性验证

问题描述 投票:0回答:1

尝试为unique属性自定义错误消息。尝试更改我的validation.php

    'custom' => [
        'email' => [
            'unique:users' => 'Oops, email is taken. Please try again!'
        ]
    ],

并且我在controller中调用验证:

    request()->validate([
        'email' => 'unique:users',
        'password' => 'required|min:3',
    ]);

而且我仍然得到这个:

电子邮件已被收取。

validation laravel-5 laravel-validation
1个回答
0
投票

您可以创建一个自定义验证器并将您的消息传递到其中

使用自定义验证器

$messages = [
    'required' => 'The :attribute field is required.',
];

$validator = Validator::make($input, $rules, $messages);

对您来说,这意味着

$messages = [
    'email' => [
        'unique' => 'Oops, email is taken. Please try again!'
    ]
];


$rules = [
    'email' => 'unique:users',
    'password' => 'required|min:3',
];

$validator = Validator::make(request()->all(), $rules, $messages);

if ($validator->fails()) {
    return redirect('route/when/failed')
         ->withErrors($validator)
         ->withInput();
}

使用语言文件

resources/lang/{{language}}/validation.php中可以添加

'custom' => [
    'email' => [
        'unique' => 'Oops, email is taken. Please try again!',
    ],
]
© www.soinside.com 2019 - 2024. All rights reserved.