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.」) ではなく、デフォルトのエラー メッセージ (「The email field is required.」) が表示され続けることです。

次のコードを使用して、ビューにエラーを表示しています。

{{ $errors->first('email') }}

PhpStorm で検証メソッドの Go To Declaration を選択すると、次の関数が表示されるため、これが正しい方法だと思います。

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/nlディレクトリに作成し、ファイルを次のようにconfig/app.php設定localeしてファイルを作成する必要がありますnl

編集

ソースを見て、新しいLaravel 5バージョンでは、実際に3番目のパラメーターが使用されています。新しいパラメーターが追加され、コンパイルされたファイルに古いバージョンが含まれているようです (変更したファイルcomposer.jsonまたは古いcomposer.jsonファイルがある可能性があります)。

同様の問題が発生した場合は常に、コンソールで実行する必要があります。

php artisan clear-compiled

コンパイルされたファイルを削除します。

開発時にこのファイルを使用したくない場合は、composer.jsonファイルから削除できます。次の行を削除する必要がありますが、本番環境での実行時に復元して新しい mfile"php artisan optimize"を生成しないと、アプリのパフォーマンスに影響します。compiled.php

于 2015-03-19T22:44:04.283 に答える