0

我在控制器操作中使用以下代码进行验证。我 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 中选择 Go To Declaration 的 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);
    }
}

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

4

2 回答 2

2

问题是,控制器验证使用ValidatesRequests和验证方法是这样定义的:

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

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

你不能通过这里翻译。但是,在您的情况下,您应该只在目录中创建validation.php 带有翻译的文件,并将文件设置为resources/lang/nlconfig/app.phplocalenl

编辑

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

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

php artisan clear-compiled

删除已编译的文件。

如果您不想在开发时拥有此文件,则可以将其从composer.json文件中删除 - 您应该删除行,"php artisan optimize"但是如果您不恢复它并compiled.php在生产中运行时生成新的 mfile,它将影响应用程序性能。

于 2015-03-19T22:44:04.283 回答
0

您可以使用该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()]);
}
于 2017-11-15T06:13:40.567 回答