Laravel-错误消息未转换为实际错误消息,以“”开头;验证&”;


Laravel - Error messages not translating to actual error message, start with "validation."

我在Laravel中尝试表单验证时遇到了问题,这很奇怪,因为它通常只起作用。

在我的用户模型中,我创建了验证规则:

public static $rules = array(
    'firstname'=>'required|min:2|alpha',
    'lastname'=>'required|min:2|alpha',
    'email'=>'required|email|unique:users',
    'password'=>'required|alpha_num|between:8,12|confirmed',
    'password_confirmation'=>'required|alpha_num|between:8,12',
    'telephone'=>'required|between:10,12',
    'admin'=>'integer'
);

在我的用户控制器中,我只定义验证通过时的操作,如果没有通过,则用户会被重定向回错误:

public function postCreate() {
    $validator = Validator::make(Input::all(), User::$rules);
    if ($validator->passes()) {
        $user = new User;
        $user->firstname = Input::get('firstname');
        $user->lastname = Input::get('lastname');
        $user->email = Input::get('email');
        $user->password = Hash::make(Input::get('password'));
        $user->telephone = Input::get('telephone');
        $user->save();
        return Redirect::to('users/signin')
            ->with('message', 'Thank you for creating a new account. Please sign in.');
    }
    return Redirect::to('users/create-account')
        ->with('message', 'Something went wrong')
        ->withErrors($validator)
        ->withInput();
}

出现以下错误:

在视图中,我显示错误(如果存在):

@if($errors->has())
    <div id="form-errors">
    <p>The following errors have occurred:</p>
    <ul>
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
    </div><!-- end form-errors -->
@endif

我遇到的问题是,当提交一个空表单时,它的输出是:

validation.required
validation.required
validation.required
validation.required
validation.required
validation.required

代替:

The firstname field is required.
The lastname field is required.
The email field is required.
The password field is required.
The password confirmation field is required.
The telephone field is required.

如果有人能告诉我为什么会发生这种事,或者我错过了什么,我将不胜感激!

如果它以前对你有效,那么你应该检查你是否在app'lang'en'validation.php中定义了消息,或者碰巧你已经更改了应用程序的区域设置,但还没有为它定义消息。有很多可能性。

我遇到了类似的问题,问题是我不小心删除了resources/lang/en/validation.php

我遇到了这个问题。检查lang目录,它应该放在resource目录中。

我把lang目录拖到另一个目录,然后得到了和您相同的验证响应。修复只是将其移回资源目录。

当我将区域设置和备份区域设置为在app.php中没有验证文件的区域设置时,我遇到了类似的问题。请尝试将备份区域设置成en或您确信存在的区域设置。

我也有同样的问题,以下是这个问题的解决方案

检查resources/lang/en/validation.php文件是否存在

在config''app.php中将您的区域设置和fallback_locale更改为'en'

'locale' => 'en',
...
...
'fallback_locale' => 'en',
...

然后运行,php artisan config:cache

此问题的解决方案检查lang目录是否在/resources目录下退出。

文件project'lang'en'validation.phpproject'resources'lang'en'validation.php中丢失。

SIMPLElang文件夹—它在resources'lang中不存在。只需复制粘贴资源中的lang文件夹即可。

我是怎么想的我用breez Vue Inertia安装了一个新的laravel应用程序,它能很好地处理错误消息,然后我比较了我当前的项目结构,做了一些研究,最终得到了解决方案。

只需从project'lang复制整个文件夹并粘贴到project'resources'lang中即可。如果资源中没有lang文件夹,那么只需创建它并粘贴复制的文件。它成功了!此错误主要发生在创建简单的Laravel项目并稍后安装Vue等时。在安装/配置过程中,lang文件夹可能会在resources/lang中意外跳过。

如果您没有validation.php文件,那么只需转到github laravel/laravel并复制该文件。

您需要在创建一个文件

resources/lang/en/validation.php

并从此url复制内容PHPClasses