2016-03-28 6 views
0

Laravel検証プログラムにどの言語を検証に使用することが可能ですか?Laravel検証言語を指定

英語のテキストを持つアプリケーションがありますが、一部のフォームでは、フィールドが異なる言語で返されるための検証エラーが必要です。

私は少しを調査し、私はアプリの言語を設定する\App::setLocale('ro')を使用することができますので、resources/lang/ro/validation.php下のファイルは、検証に使用されますが、私はsetLocaleを和らげるにしたくないことが分かりました。最悪のシナリオでは、検証の前に言語を変更し、検証後に変更することもできますが、良い解決策のようには見えません。

私はもっとこのような何かを探しています:

$validator = Validator::make($request->all(), [ 
    'title' => 'required', 
    'short' => 'required', 
]); 

$validator->getTranslator()->setLocale('ro'); 

$this->validateWith($validator); 

答えて

0

私は理解しました:カスタムバリデータはあなたのためのオプションがある

$this->validate($request, [ 
    'title' => 'required', 
    'short' => 'required', 
], 'lang_that_I_set_in_DB'); 
1

場合は、バリデータトランスレータのロケールを設定することができますこれは、私に指針をくれてくれてありがとう!

これはLaravel 5.1でどのように見えるかです:

$validator = \Validator::make($request->all(), [ 
    'title' => 'required', 
    'short' => 'required', 
]); 

$validator->getTranslator()->setLocale('ro'); 

if ($validator->fails()) { 
    return redirect() 
     ->back() 
     ->withErrors($validator) 
     ->withInput(); 
} 
+0

あなたがこの上で手の込んだてもらえますか? getTranslator()はカスタムバリデータのカスタムメソッドですか? –

+1

"カスタムバリデータ"とは、 'ValidatesRequests'の特性によって直接提供される' validate() 'メソッドを直接使用できないことを意味します。 'Validator :: make()'は '\ Illuminate \ Validation \ Validator'のインスタンスを返すだけですので、翻訳者ロケールを手動で設定することができます。 'ValidatesRequest :: validateWith()'を使用して、 "カスタム" Validatorインスタンスでリクエストを検証できます。私はその部分を提供するために私の答えを編集しました。 – tommy

+0

フォームリクエストクラスを使用するときにこれが異なることにも言及したいと思います。 – tommy

関連する問題