Validation L5未显示自定义验证消息

Validation L5未显示自定义验证消息,validation,laravel,laravel-5,laravel-validation,Validation,Laravel,Laravel 5,Laravel Validation,我正在控制器操作中使用以下代码进行验证。我100%确定这是用于验证的代码,因为删除和添加验证工作正常: $this->validate($request, [ 'email' => 'required|email', 'password' => 'required' ], [ 'email.required' => 'Vul een e-mailadres in.', 'email.email' => 'Vul een geldig

我正在控制器操作中使用以下代码进行验证。我100%确定这是用于验证的代码,因为删除和添加验证工作正常:

$this->validate($request, [
    'email' => 'required|email',
    'password' => 'required'
], [
    'email.required' => 'Vul een e-mailadres in.',
    'email.email' => 'Vul een geldig e-mailadres in.',
    'password.required' => 'Vul een wachtwoord in.'
]);
问题是它一直显示默认错误消息(“电子邮件字段是必需的”),而不是我提供的消息(“Vul een e-mailadres in”)

我使用以下代码在视图中显示错误:

{{ $errors->first('email') }}
我想这是正确的方法,因为当我选择在PhpStorm中声明validate方法时,我看到以下函数:

vendor\laravel\framework\src\Illuminate\Foundation\Validation\ValidatesRequests.php:

public function validate(Request $request, array $rules, array $messages = array())
{
    $validator = $this->getValidationFactory()->make($request->all(), $rules, $messages);

    if ($validator->fails())
    {
        $this->throwValidationException($request, $validator);
    }
}

为什么它一直显示默认错误消息?

问题是,控制器验证使用
validateRequests
,验证方法的定义如下:

public function validate(Request $request, array $rules)
{
    $validator = $this->getValidationFactory()->make($request->all(), $rules);

    if ($validator->fails())
    {
        $this->throwValidationException($request, $validator);
    }
}
你不能通过这里。但是,在您的情况下,您只需在
resources/lang/nl
目录和
config/app.php
文件集
locale
nl

编辑

我看过源代码,在更新的Laravel5版本中,确实使用了第三个参数。似乎添加了新参数,并且编译文件中有旧版本(可能修改了
composer.json
或旧的
composer.json
文件)

当您遇到类似问题时,应在控制台中运行:

php artisan clear-compiled
删除已编译的文件


如果您不想在开发时使用此文件,可以将其从
composer.json
文件中删除-您应该使用
“php artisan optimize”删除行
但是,如果在生产环境中运行时不还原应用程序并生成新的
编译的.php
mfile,则会影响应用程序性能。

您可以使用
Validato::make()
方法

$data = Input::all();
$rules = array(
    'email' => 'required|email',
    'password' => 'required'
);
$messages = array(
    'email.required' => 'Vul een e-mailadres in.',
    'email.email' => 'Vul een geldig e-mailadres in.',
    'password.required' => 'Vul een wachtwoord in.'
);
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails())
{
    return Response::json(['error' => $validator->errors()->first()]);
}

这几乎就是问题所在。我用我的方法版本更新了我的问题,其中接受$messages数组(我根本没有更改文件)。但是,在
storage\framework\compiled.php中,正在使用您的方法版本。删除此文件后,它正在工作。你知道这怎么可能吗?我担心这个问题会再次出现,因为它以前也是以这种方式工作的,但突然之间不再是了。