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

问题描述 投票:0回答:9

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

如果有人可以建议为什么会发生这种情况或我缺少什么,那么我将不胜感激!

php validation laravel laravel-4 localization
9个回答
10
投票

如果它之前对您有用,那么您应该检查您是否在

app\lang\en\validation.php
中定义了消息,或者您碰巧更改了应用程序的 locale 并且尚未为其定义消息。有很多可能性。


7
投票

我有类似的问题,对我来说问题是我不小心删除了 资源/lang/en/validation.php


4
投票

我有这个问题。 检查

lang
目录,应该放在
resource
目录下。

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


2
投票

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


0
投票

此问题的解决方案检查您的

lang
目录是否存在于
/resources
目录下。


0
投票

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

检查

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

在配置 pp.php 中将您的区域设置和fallback_locale更改为“en”

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

然后运行,

php artisan config:cache


0
投票

文件

project\lang\en\validation.php
project\resources\lang\en\validation.php
缺失

SIMPLE

lang
文件夹不存在于
resources\lang
中。只需将 lang 文件夹复制粘贴到 resources 中即可。

我怎么算出来的? 我使用 breez Vue Inertia 安装了一个新的 laravel 应用程序,它运行良好,但有错误消息,然后我比较了当前的项目结构并做了一些研究,最终得到了解决方案。

只需从

project\lang
复制整个文件夹并粘贴到
project\resources\lang
。如果资源中没有 lang 文件夹,则只需创建它并粘贴复制的文件即可。它起作用了!此错误主要发生在您创建简单的 Laravel 项目,然后安装 Vue 等,并且在安装/配置过程中,
lang
文件夹可能会在
resources/lang
中意外跳过。

如果你没有

validation.php
文件,那么只需转到 github laravel/laravel 并复制该文件即可。


0
投票

您需要在

创建一个文件
resources/lang/en/validation.php

并从此网址复制内容 PHP 类


0
投票

我也有同样的问题。我用旧的文件夹替换了 resources 文件夹,其中没有 lang/en/validation.php,这就是原因,您只需添加该文件即可!!

© www.soinside.com 2019 - 2024. All rights reserved.