2016-06-19 24 views
0

Laravelでは、検証者向けにカスタムメッセージを作成できます。しかし、私は準備されたメッセージが少し間違っていることを発見した。 beforeafterの検証規則では、パラメータはdocumentationと同じようにstrtotimeで変換されます。検証前/検証後メッセージLaravel

したがって、ルール'expires' => 'before:+1 year'を設定すると、ルールは正常に動作しています。ユーザーが間違った値を入力した場合でも、Laravelは印刷し、そのようなメッセージ:

ザ・有効期限が切れるは、このメッセージは、平均的なクライアントのために非常に不明確である

1年前の日付でなければなりません。メッセージはstrtotimeでも変換されることが予想されました。

もっとクリアなエラーメッセージを印刷するには、きれいな方法がありますか?

答えて

0

必要に応じて、検証メッセージをカスタムメッセージで上書きすることができます。フォームRequestクラスで

、次のメソッドを追加し、そのようなメッセージに変更:

public function messages() 
{ 
    return [ 
     // 'fieldname.rulename' => 'Custom message goes here.' 
     'email.required' => 'Er, you forgot your email address!', 
     'email.unique' => 'Email already taken m8', 
    ]; 
} 

更新:

をグローバルメッセージを変更したい場合は、あなたがvalidation.phpを開くことができますファイル内にresources/lang/en/validation.phpとメッセージを編集します。

+0

しかし、バリデータごとにその代わりに、デフォルトの後/前のルールで行うことはできますか? – nrofis

+0

ええ、私はなぜそうではありません、これらはあなたにアイデアを与えるための単なる例です。フィールド名とルール名を変更するだけでよいです。 – Ruffles

+0

私はそれを理解していますが、 'before'と' after'で多くのバリデータを持っています。私は手動でそれらをすべて変更したくありません.... – nrofis

0

することはできユーザーAppServiceProvider.php
とあなたがvalidation.phpファイルであり、新しい検証ルールを記述し、エラーメッセージを設定することができます
/app/Providers/AppServiceProvider.php
/リソース/ LANG/EN/validation.php

例:

Validator::extend('before_equal', function ($attribute, $value, $parameters) { 
     return strtotime(Input::get($parameters[0])) >= strtotime($value); 
    }); 

とのメッセージがある

'before_equal' => 'The :attribute field is only accept date format before or equal to end date',   

これを試してください。必要に応じてこれを変更できます。