【问题标题】:Laravel validation messages contain "validation." instead of custom error messageLaravel 验证消息包含“验证”。而不是自定义错误消息
【发布时间】:2021-02-24 23:54:31
【问题描述】:

我有一个功能可以进行一些验证。我得到的是验证规则名称,而不是 $errors->get(key) 返回我定义的自定义错误消息。例如,如果我使用的电子邮件不是唯一的:

$messages = [
    'new_email.required' => 'Your new email address is required.',
    'new_email:unique' => 'That email is already in use.',
    'current_password|required' => 'Your current password must be provided.'
];
$rules = [
    'new_email' => 'required|email|unique:users,email,' . $user->id,
    'current_password' => 'required',
];

$validator = Validator::make($request->all(), $rules, $messages); // <-- custom error messages passed in here
if ($validator->fails()) {
    $errors = $validator->errors();
    if ($errors->has('new_email')) {
        $msg = $errors->get('new_email'); // $msg contains ['validation.unique'] instead of ['That email is already in use.']
        ...     
    }
}

$errors-&gt;get('new_email') 返回['validation.unique'],而不是作为第三个参数传递给Validator::make 的数组中的自定义错误消息。如何获取自定义错误消息而不是已被请求破坏的验证规则?

有一些与此类似的问题,但所有答案似乎都集中在resource/lang/xx/validation.php 文件丢失或类似问题上。我根本没有使用这些本地化功能。

【问题讨论】:

  • 您的消息数组键只是使用随机字符作为分隔符?那是行不通的。使用一个点

标签: laravel validation


【解决方案1】:

基于documentation,您应该在属性和验证规则之间设置一个字符串。

$messages = [
    'new_email.unique' => 'That email is already in use.',
];

【讨论】:

  • 由于排版错误引起的问题应该被投票或标记为关闭,而不是回答。
  • 但是类型是关于敲错键的,比如写 $varr 而不是 $var?这似乎是一个关于使用正确分隔符的混淆问题。
  • 啊。哎呀。漫长的一天,没有注意到我有这个错误的分隔符:) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 2017-06-28
  • 2017-12-13
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 2020-07-18
  • 2018-11-17
相关资源
最近更新 更多