为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 laravel 中更改验证错误的密钥

如何在 laravel 中更改验证错误的密钥

PHP
慕侠2389804 2022-08-19 09:54:04
我是laravel的新手,正在研究apis,我已经制作了一个api,我已经实现了验证。一切都很好,但我被困在一件小事上。我想更改验证错误中的键名称。例如,对于“唯一”验证错误。这就是现在显示的内容我想用“消息”(文本)重命名“电子邮件”(文本)键我在照明/支持/验证方面尝试了很多东西.phpmessagebag.php文件,但如果它更改,则错误显示“数据未定义”。我关注的链接是https://stillat.com/blog/2018/04/21/laravel-5-message-bags-adding-messages-to-the-message-bag-with-addhttps://laracasts.com/discuss/channels/laravel/custom-validation-message-for-array-using-different-key?page=0覆盖 laravel 验证消息这是验证码$validator = Validator::make($request->all(), [       'first_name' => 'required',      'last_name' => 'required',      'email' => 'required|email|unique:users',      'fcm_token' => 'required',      'password' => 'required',        'c_password' => 'required|same:password'     ]); 
查看完整描述

4 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您可以手动遍历错误消息包并构造响应以替换密钥


    $validator = Validator::make($request->all(), [ 

      'first_name' => 'required',

      'last_name'  => 'required',

      'email'      => 'required|email|unique:users',

      'fcm_token'  => 'required',

      'password'   => 'required',  

      'c_password' => 'required|same:password' 

    ]);   


    $errors = [];

    foreach ($validator->errors()->messages() as $key => $value) {

        if($key == 'email')

            $key = 'message';

        $errors[$key] = is_array($value) ? implode(',', $value) : $value;

        //implode is for when you have multiple errors for a same key

        //like email should valid as well as unique

    }


    $result = array("status" => count($errors)?0:1, 'data'=>$errors);

    return $result;


查看完整回答
反对 回复 2022-08-19
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

为了更改某个字段的错误消息的键,可以将此特定字段的验证从请求传输到控制器(或服务)。这样,您就可以使用所需的任何名称引发错误。


例如:


if (#your validation of the field failed#) {

  throw ValidationException::withMessages(['your_key' => 'your message']);

}

不要忘记这行:


use Illuminate\Validation\ValidationException;

现在的错误将如下所示:


{

    "message": "The given data was invalid.",

    "errors": {

        "your_key": [

            "your message"

        ]

    }

}


查看完整回答
反对 回复 2022-08-19
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

在资源中 - lang - en(或任何语言) - 验证.php


将此代码放在底部:


'attributes' => [

    'email' => 'The Email', 

],


查看完整回答
反对 回复 2022-08-19
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

如果我很好地理解了这个问题。这将帮助您:

https://laravel.com/docs/7.x/validation#rule-unique

在您的情况下:

'email' => 'required|email|unique:users,message'

唯一:表,列,例外,id列

希望它有帮助。


查看完整回答
反对 回复 2022-08-19
  • 4 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信