[PHP][Laravel] バリデーション前にデータを修正する
バージョン
Laravel 5.7
概要
例えば、画面に「年月日」と「時刻」の入力エリアがあり、
それらを連結してdatetimeとしてバリデーションしたい場合などで
バリデーション検証される前にデータを修正させる。
コード
■FormRequest
protected function getValidatorInstance() { $data = $this->all(); $data['datetime'] = $this->input('date') . ' ' . $this->input('time'); $data['name'] = $this->input('name') . ' 様'; $this->getInputSource()->replace($data); return parent::getValidatorInstance(); }
FormRequest側でgetValidatorInstanceをオーバーライドして
値を修正したり、追加する。
FormRequestのインプットデータ(request input data)を編集するので、編集されたデータをDB登録などに使うことができる。
ちなみにネットで調べるとcontroller側で以下のようにしているケースもあるが
Laravelのバージョンによってはバリデーションやoldで認識されないので注意が必要。
■Controller
※この方法はおすすめしない
$data = $request->all(); $data['datetime'] = $data['date'] . ' ' . $data['time']; $data['name'] = $data['name'] . ' 様'; $request->replace($data); $values = $this->validate($request, $rules);
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2017/09/16
- メディア: 単行本
- この商品を含むブログを見る