開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Laravel >
  5. FormRequestでValue値を翻訳する

FormRequestでValue値を翻訳する

こんにちは。
ニシザワです。


本日は、LaravelのFormRequestでvalue値を翻訳する方法について書きたいと思います。

バリデーションルールでこんなこと無いでしょうか


            'type' => 'nullable|integer|in:1,2,3',
            'message' => 'nullable|required_if:type:2'
みたいに書くと、エラーメッセージが
タイプが2の場合はメッセージを入力してください。

2ってなんだよ!って感じ。
これをLaravelで翻訳対応するなら、resources/lang/言語/validation.phpのcustomに書いてあげれば対応できます。
ただこの翻訳ファイルだと、typeが1回しか使えないです。
であれば、個別に対応したいですよね。

ということで本題です
FormRequestでこのvalue値を翻訳する方法をここから書きます。

環境

  • Laravel6.x系
これから説明する箇所はほとんど変わってないのでLaravel5系や7系、8系でも使えるかと思います。

対応ソース


    protected function getValidatorInstance()
    {
        $validator = parent::getValidatorInstance();
        $validator->setValueNames(['type' => [2 => '新着']]);
        return $validator;
    }
Validatorクラスに$customValuesのプロパティを持ってます。
このプロパティに翻訳する情報を入れてあげるとvalue値が翻訳されます。
$customValuesプロパティに値をセットするのが、setValueNamesメソッドになります。

FormRequestは標準ではValidatorクラスをgetValidatorInstanceメソッドで解決しているため、そちらを継承して
ValidatorクラスにsetValueNamesを使って翻訳を入れている形です。


こうすることで、バリデーションのエラーメッセージが
タイプが新着の場合はメッセージを入力してください。
となります。


本日は以上です。
TOPに戻る