Laravel 自定义验证规则应该是小写?
Laravel Custom Validation Rules should be lowercase?
我有模型,它有几个字段名,'lastName'在其中。
在我的 FormRequest 文件中,我有这个字段的规则和消息:
$rules = ['lastName.*' => 'lastName_fail: index'];
$messages = ['lastName.*lastName_fail' => This lastName has different value in DB!'];
当我提交表单时,故意用 'wrong' 值填充 'lastName' 字段,它没有通过验证,并且 returns 错误消息:
validation.last_name_fail
(这不是 $messages 中的内容)。
但是当我将 $rules 和 $messages 更改为:
$rules = ['lastName.*' => 'lastname_fail: index'];
$messages = ['lastName.*lastname_fail' => This lastName has different value in DB!'];
(所以实际的 "rule" 现在是小写 "lastname_fail"),它输出我想要的:
这个姓氏在数据库中有不同的值!
from this I may conclude that Laravel's validation rule name may be
only lowercase.
Is it declared anywhere in documentation?
如果是这样,也许对某人有帮助。
文档中没有提到。但是,验证规则方法名称和规则名称都有一个命名模式。
规则方法名称:
它必须有 validate
前缀,其余部分必须在 Camel Case
.
中
规则名称:
它将在 lowercase
中,没有 validate
前缀,每个单词将由 underscore
分隔。
所以如果你想添加alpha_dash_spaces
验证规则那么相应的方法将被命名为validateAlphaDashSpaces()
.
在Validator
之前简单地解析$request[data]
use Illuminate\Support\Str;
$request['name_it'] = Str::lower($request['name_it']);
$request['name_en'] = Str::lower($request['name_en']);
$validator = Validator::make($request->all(), [
'name_it' => ['required', 'string', 'max:255', 'unique:categories'],
'name_en' => ['required', 'string', 'max:255', 'unique:categories'],
]);
if ($validator->fails()) {
return redirect()
->back()->withErrors($validator)
->withInput();
}
我有模型,它有几个字段名,'lastName'在其中。
在我的 FormRequest 文件中,我有这个字段的规则和消息:
$rules = ['lastName.*' => 'lastName_fail: index'];
$messages = ['lastName.*lastName_fail' => This lastName has different value in DB!'];
当我提交表单时,故意用 'wrong' 值填充 'lastName' 字段,它没有通过验证,并且 returns 错误消息:
validation.last_name_fail
(这不是 $messages 中的内容)。
但是当我将 $rules 和 $messages 更改为:
$rules = ['lastName.*' => 'lastname_fail: index'];
$messages = ['lastName.*lastname_fail' => This lastName has different value in DB!'];
(所以实际的 "rule" 现在是小写 "lastname_fail"),它输出我想要的:
这个姓氏在数据库中有不同的值!
from this I may conclude that Laravel's validation rule name may be only lowercase.
Is it declared anywhere in documentation?
如果是这样,也许对某人有帮助。
文档中没有提到。但是,验证规则方法名称和规则名称都有一个命名模式。
规则方法名称:
它必须有 validate
前缀,其余部分必须在 Camel Case
.
规则名称:
它将在 lowercase
中,没有 validate
前缀,每个单词将由 underscore
分隔。
所以如果你想添加alpha_dash_spaces
验证规则那么相应的方法将被命名为validateAlphaDashSpaces()
.
在Validator
之前简单地解析$request[data]use Illuminate\Support\Str;
$request['name_it'] = Str::lower($request['name_it']);
$request['name_en'] = Str::lower($request['name_en']);
$validator = Validator::make($request->all(), [
'name_it' => ['required', 'string', 'max:255', 'unique:categories'],
'name_en' => ['required', 'string', 'max:255', 'unique:categories'],
]);
if ($validator->fails()) {
return redirect()
->back()->withErrors($validator)
->withInput();
}