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

xxhby3vn  于 2022-12-10  发布在  PHP
关注(0)|答案(7)|浏览(134)

我有问题,试图让表单验证工作在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.

如果有人能建议为什么会发生这种情况或我错过了什么,那么这将是非常感谢!

xggvc2p6

xggvc2p61#

如果你以前使用过,那么你应该检查一下你是否在app\lang\en\validation.php中定义了消息,或者你碰巧改变了应用的locale,没有为它定义消息。有很多种可能性。

wf82jlnq

wf82jlnq2#

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

vd2z7a6w

vd2z7a6w3#

我遇到了这个问题。检查lang目录,它应该放在resource目录中。
我把lang目录拖到另一个目录,然后我得到了和你一样的验证响应。修复的方法只是把它移回资源目录。

zujrkrfu

zujrkrfu4#

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

vsdwdz23

vsdwdz235#

我遇到了同样的问题,下面是此问题的解决方案

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

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

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

然后运行php artisan config:cache

6rqinv9w

6rqinv9w6#

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

u7up0aaq

u7up0aaq7#

project\resources\lang\en\validation.php中 * 缺少 * 文件project\lang\en\validation.php
SIMPLElang文件夹不存在于resources\lang中。只需将lang文件夹复制粘贴到resources中。
**我是如何弄清楚的?**我安装了一个新的laravel应用程序与breez Vue惯性和它的工作与错误消息很好,然后我比较我目前的项目结构,并做了一些研究,最后得到了解决方案。

只需从project\lang复制整个文件夹并粘贴到project\resources\lang中。如果资源中没有lang文件夹,则只需创建它并粘贴复制的文件。它的工作!此错误大多发生在您创建简单的***Laravel项目***和随后安装Vue等时,并且在安装/配置lang文件夹时可能会意外跳过resources/lang
如果您没有validation.php文件,那么只需后藤github laravel/laravel并复制该文件。

相关问题