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

IPr*_*Man 4 php localization laravel laravel-validation laravel-localization

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

\n
$rules = [\n    'password' => [\n        'required',\n        'confirmed',\n        Rules\\Password::min(8)->letters()->mixedCase()->numbers()->symbols(),\n    ],\n];\n$messages = [\n    'password.required'  => '\xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa7\xd8\xaf\xd8\xae\xd8\xa7\xd9\x84 \xd9\x83\xd9\x84\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x85\xd8\xb1\xd9\x88\xd8\xb1',\n    'password.confirmed' => '\xd9\x83\xd9\x84\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x85\xd8\xb1\xd9\x88\xd8\xb1 \xd8\xba\xd9\x8a\xd8\xb1 \xd9\x85\xd8\xaa\xd8\xb7\xd8\xa7\xd8\xa8\xd9\x82\xd8\xa9',\n];\n$request->validate($rules, $messages);\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

mik*_*n32 6

根据原始拉取请求中的此注释,您无法在代码中执行此操作,并且必须使用 JSON 本地化文件。

\n

因此,检查默认文本的验证类,然后resources/lang/ar.json为其添加翻译,如下所示:

\n
{\n  "The :attribute must contain at least one letter.": ":attribute \xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa3\xd9\x86 \xd9\x8a\xd8\xad\xd8\xaa\xd9\x88\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x82\xd9\x84 \xd8\xad\xd8\xb1\xd9\x81 \xd9\x88\xd8\xa7\xd8\xad\xd8\xaf.",\n  "The :attribute must contain at least one uppercase and one lowercase letter.": ":attribute \xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa3\xd9\x86 \xd9\x8a\xd8\xad\xd8\xaa\xd9\x88\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x82\xd9\x84 \xd8\xad\xd8\xb1\xd9\x81 \xd9\x83\xd8\xa8\xd9\x8a\xd8\xb1 \xd9\x88\xd8\xa7\xd8\xad\xd8\xaf \xd9\x88\xd8\xad\xd8\xb1\xd9\x81 \xd8\xb5\xd8\xba\xd9\x8a\xd8\xb1 \xd9\x88\xd8\xa7\xd8\xad\xd8\xaf.",\n  "The :attribute must contain at least one number.": ":attribute \xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa3\xd9\x86 \xd9\x8a\xd8\xad\xd8\xaa\xd9\x88\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x82\xd9\x84 \xd8\xb1\xd9\x82\xd9\x85 \xd9\x88\xd8\xa7\xd8\xad\xd8\xaf.",\n  "The :attribute must contain at least one symbol.": ":attribute \xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa3\xd9\x86 \xd9\x8a\xd8\xad\xd8\xaa\xd9\x88\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x82\xd9\x84 \xd8\xb1\xd9\x85\xd8\xb2 \xd9\x88\xd8\xa7\xd8\xad\xd8\xaf."  \n}\n
Run Code Online (Sandbox Code Playgroud)\n

长度消息使用以下标准长度resources/lang/ar/validation.php

\n
<?php\nreturn [\n  "min" => [\n    "string" => "\xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa3\xd9\x86 \xd9\x8a\xd9\x83\xd9\x88\xd9\x86 \xd8\xb7\xd9\x88\xd9\x84 \xd9\x86\xd8\xb5 \xd8\xad\xd9\x82\xd9\x84 :attribute \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x82\xd9\x84 :min \xd8\xad\xd8\xb1\xd9\x88\xd9\x81\xd9\x8d/\xd8\xad\xd8\xb1\xd9\x81\xd9\x8b\xd8\xa7.",\n  ],\n];\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
$messages = [\n    \'password.required\'  => \'\xd9\x8a\xd8\xac\xd8\xa8 \xd8\xa7\xd8\xaf\xd8\xae\xd8\xa7\xd9\x84 \xd9\x83\xd9\x84\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x85\xd8\xb1\xd9\x88\xd8\xb1\',\n    \'password.confirmed\' => \'\xd9\x83\xd9\x84\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x85\xd8\xb1\xd9\x88\xd8\xb1 \xd8\xba\xd9\x8a\xd8\xb1 \xd9\x85\xd8\xaa\xd8\xb7\xd8\xa7\xd8\xa8\xd9\x82\xd8\xa9\',\n    \'password.min\' => \'whatever\',\n];\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,有一些软件包(例如Laravel Lang)可以为您完成所有这些翻译。

\n