使用自定义错误消息验证密码规则

Validating Password rules with a custom error message

使用像“password.required”这样的标准符号,我可以为内置验证规则自定义错误消息。但是如何为 Illuminate\Validation\Rules\Password 规则自定义错误消息?

$rules = [
    'password' => [
        'required',
        'confirmed',
        Rules\Password::min(8)->letters()->mixedCase()->numbers()->symbols(),
    ],
];
$messages = [
    'password.required'  => 'يجب ادخال كلمة المرور',
    'password.confirmed' => 'كلمة المرور غير متطابقة',
];
$request->validate($rules, $messages);

如何为 min()letters() 等自定义消息?

根据原始拉取请求中的 this comment,您不能在代码中执行此操作,必须使用 JSON 本地化文件。

因此请检查 the validation class 的默认文本,然后在 resources/lang/ar.json 中为其添加翻译,如下所示:

{
  "The :attribute must contain at least one letter.": ":attribute يجب أن يحتوي على الأقل حرف واحد.",
  "The :attribute must contain at least one uppercase and one lowercase letter.": ":attribute يجب أن يحتوي على الأقل حرف كبير واحد وحرف صغير واحد.",
  "The :attribute must contain at least one number.": ":attribute يجب أن يحتوي على الأقل رقم واحد.",
  "The :attribute must contain at least one symbol.": ":attribute يجب أن يحتوي على الأقل رمز واحد."  
}

长度消息使用 resources/lang/ar/validation.php 中的标准长度:

<?php
return [
  "min" => [
    "string" => "يجب أن يكون طول نص حقل :attribute على الأقل :min حروفٍ/حرفًا.",
  ],
];

或者可以在上面的代码中声明。

$messages = [
    'password.required'  => 'يجب ادخال كلمة المرور',
    'password.confirmed' => 'كلمة المرور غير متطابقة',
    'password.min' => 'whatever',
];

请注意,Laravel Lang 等软件包可以为您完成所有这些翻译。