Laravel - 错误信息没有转化为实际的错误信息,以“验证”开头。

Posted

技术标签:

【中文标题】Laravel - 错误信息没有转化为实际的错误信息,以“验证”开头。【英文标题】:Laravel - Error messages not translating to actual error message, start with "validation." 【发布时间】:2014-11-18 05:08:37 【问题描述】:

我在尝试在 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.

如果有人能提出为什么会发生这种情况或我缺少什么,那么将不胜感激!

【问题讨论】:

在 Laravel 5 中遇到同样的问题,不知道为什么... 我也是!在 Laravel 5 中,但仅限于某些环境/服务器 @Lloople 很伤心,实际上让我离开了 Laravel... 还不错,因为我现在正在学习更多的 javascript :) 如果你找到了答案,请发布它? @IndigoIdentity 我的问题是我用 Config::set('app', $my_config_array) 覆盖了默认设置,因此我失去了 app.language 值。 【参考方案1】:

如果它之前对您有用,那么您应该检查您是否在 app\lang\en\validation.php 中定义了消息,或者您碰巧更改了应用程序的 区域设置 并且没有为其定义消息.有很多可能性。

【讨论】:

您好,谢谢您的回复。我正在使用在validation.php 文件中确实定义的默认错误消息。真的很奇怪,一切似乎都是 100% 正确的,但验证并未将错误转化为消息?【参考方案2】:

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

【讨论】:

【参考方案3】:

当我将我的语言环境和备份语言环境都设置为在 app.php 中没有验证文件的语言环境时,我遇到了类似的问题。尝试将备份语言环境设置为 en 或您确定存在的语言环境。

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

我有同样的问题,这里是解决这个问题的方法

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

在 config\app.php 中将您的语言环境和 fallback_locale 更改为“en”

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

然后运行,php artisan config:cache

【讨论】:

以上是关于Laravel - 错误信息没有转化为实际的错误信息,以“验证”开头。的主要内容,如果未能解决你的问题,请参考以下文章

在 VC++ 中找到实际的错误点

Laravel访问出错错误信息:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or dire

Oracle内置函数SQLCODE和SQLERRM的使用

2星|《复盘+:把经验转化为能力》:信息浓度低,案例牵强,没有实际改进案例

laravel 页面空白没有内容

Mongoose .insertOne() 不工作(没有给出错误信息)