これは便利! laravel5.1で、全ての入力フォームのトリム(前後の空白除去)を自動的にやってくれるミドルウェア
ミドルウェアについては過去記事を参照
1, トリム用ミドルウェアを生成(好きな名前でOK)
1 |
php artisan make:middleware FormTrimMiddleware |
2, laravelに登録する(app/Http/Middleware/Kernel.phpに追記)
1 2 3 4 5 6 7 8 9 |
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, 'App\Http\Middleware\FormTrimMiddleware', // 全ての入力フォームのトリム(全角・半角スペース) ]; |
3, トリム処理を記述する。App\Http\Middleware\FormTrimMiddleware
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php namespace App\Http\Middleware; use Closure; class FormTrimMiddleware { public function handle($request, Closure $next) { $input = $request->all(); $trimmed = []; foreach($input as $key => $val) { // 入力フォームの前後のスペース(全角・半角)を除去する $trimmed[$key] = preg_replace('/(^\s+)|(\s+$)/u', '', $val); } $request->merge($trimmed); return $next($request); } } |
4, 適当な入力フォームで、テキストの前後にある全角・半角スペースが除去されてからMySQLに格納されているのを確認する。
一箇所に記述すれば、全体に反映できたりして、こういう所がフレームワークの良い所だよな~。