Laravelのバリデーションで、全角半角問題を対応(データ整形)
前置き
ウェブアプリで度々問題となる(?)入力フォーム値の全角半角について、Laravelでの対応方法です。
独自のリクエストクラスで、バリデーションの前にデータを整形する方法で対応しています。
独自リクエストクラスの使い方などは、省略します。
バリデーション前のデータ整形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * バリデーション前のデータ整形 */ protected function prepareForValidation() { // リクエストを取得 $input = $this->all(); /** * ここでデータを整形します。 */ // リクエストデータを上書き $this->merge($input); } |
prepareForValidation() にデータを整形する処理を書きます。
$this->merge($input) で、整形したデータを結合してあげてください。
ちょっとポイント
この方法はバリデーション前に、データを整形します。
バリデーションエラー時の入力フォームには反映されませんので、データ整形したのに変わってないよ~と思いがちです。
バリデーションエラーで、リダイレクトされたフォームにデータを整形反映させる方法もあります。