あれな。Inputの時にPOST値を自動的に全角から半角にしてくれたりするやつ。あれ、すげー便利なんだけど、Laravel本体にはないらしい。
waavi/sanitizerをインストール
composerにあるので https://packagist.org/packages/waavi/sanitizer
$ composer require waavi/sanitizer
でインストール
Filterクラスを作成
App/Http/Requests/Filters ディレクションを作成してクラスを登録。applyメソッドを作る。
<?php namespace App\Http\Requests\Filters; use Waavi\Sanitizer\Contracts\Filter; /** * Class Zentohan */ class Zentohan implements Filter { /** * @param mixed $value * @param array $options * @return mixed|string|string[] */ public function apply($value, $options = []) { return mb_convert_kana($value, 'KVa', 'UTF-8'); } }
Requestクラスで使う
Validator前にFilterしてくれる。
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Waavi\Sanitizer\Laravel\SanitizesInput; use App\Http\Requests\Filters\Zentohan; class UserRequest extends FormRequest { use SanitizesInput; /** * @return array filters before sanitized */ public function filters() { return [ 'name' => 'zentohan', 'email' => ['zentohan', 'lowercase'], ]; } public function customFilters() { return [ 'zentohan' => Zentohan::class ]; } }
うーん、便利。
filtersは配列で複数、あるいは|でつないで複数いける。