1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】「○○日には、todayより後の日付を指定してください。」...だと?

Posted at

概要

LaravelのフォームリクエストでPOSTした日付情報のバリデーションに
「今日より後の日付になっているかどうか」
のルールを設定したいので、Laravelに用意されているafterを使って

app/Http/Requests/Front/SampleRequest.php
'sample_date' => 'date|after:today'

こう書いたんですけど、バリデーションメッセージは下のように...

スクリーンショット 2021-03-24 16.35.21.png

"todayより"...(ルー大柴かい🤷‍♂️)

というわけでtoday今日に変えます。

環境

$ composer -V
Composer version 2.0.8 2020-12-03 17:20:38

$ php artisan --version
Laravel Framework 8.21.0

afterのバリデーションメッセージ

resources/lang/ja/validation.php
'after'                => ':attributeには、:dateより後の日付を指定してください。'

:attributeはフォームリクエストのattributesメソッドで設定できているけど、:datetodayという文字列が入ってしまっている様子。。

「today」を「今日」に変える方法

僕が見つけたのはこの3つの方法です。

  1. フォームリクエストで定義
  2. 言語ファイルのcustomで定義
  3. 言語ファイルのvaluesで定義

1.フォームリクエストで定義

まずはバリデーションを定義しているフォームリクエストのmessagesメソッドにこのフォームリクエスト専用のバリデーションメッセージを設定する方法です。

フォームリクエストに定義
public function messages()
{
    return [
        'sample_date.after' => '○○日には、今日より後の日付を指定してください。',
    ];
}

2.言語ファイルのcustomで定義

次は言語ファイル(resources/lang/ja/validation.php)のcustomで共通して使えるバリデーションメッセージを設定する方法です。

言語ファイルのcustomで定義
'custom' => [
     'sample_date' => [
         'after' => '○○日には、今日より後の日付を指定してください。',
     ],
 ],

ちなみに言語ファイルはこちら

3.言語ファイルのvaluesで定義

3つ目は言語ファイル(resources/lang/ja/validation.php)のvalues:dateに当てはめる文字列を設定する方法です。

言語ファイルのvaluesで定義
'values' => [
     'sample_date' => [
         'today' => '今日'
     ],
 ],

変更後のバリデーションメッセージ

スクリーンショット 2021-03-24 22.21.18.png

できました!!
脱ルー大柴!!

まとめ

個人的に3の「言語ファイルのvaluesで定義」はパッと見コードを見ても理解しにくいかなと思ったので、1か2が良いかなと思っています。

あとはそのプロジェクトの方針によってカスタムメッセージを

  • フォームリクエスト
  • 言語ファイル

のどちらに追加していくのかは決めれば良いのかなと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?