【這いよれLaravelさん】ミドルウェア(1)
ミドルウェアってなんじゃ
私は「ミドルウェア」と聞いてDBのことかぁああああああと思ってた
なんか色々違うようなので
私の認識でまとめる
ミドルウェアとは
雑だけどコレが一番しっくりきた
ミドルウェア定義
ミドルウェアの作り方
便利なartisanコマンドで一発作成
gomac:laravel-study goma$ php artisan make:middleware OldMiddleware Middleware created successfully.
作成される場所はここ
app/Http/Middleware/OldMiddleware.php
同じ場所に既にいくつかミドルウェアが存在する
- Authenticate.php(認証まわり
- VerifyCsrfToken.php(CSRFまわり
- EncryptCookies.php(Cookieまわり
- RedirectIfAuthenticated.php(認証まわりのリダイレクタ
便利だなー(小並感
年齢フィルタリングミドルウェアを作る
ちゃんと動くか確認するために
app/Http/Kernel.php
のrouteMiddlewareに追記
<?php protected $routeMiddleware = [ ...... 'old' => \App\Http\Middleware\OldMiddleware::class, ],
app/Http/Middleware/OldMiddleware.phpは雑にこんな感じ
年齢が200歳以下ならsuccessに飛んで
ダメならルートへ
(もっと良い検証方法なかったのかと思ってはいる)
<?php /** * リクエストフィルターを実行 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed **/ public function handle($request, Closure $next) { if ($request->input('age') <= 200) { return redirect('success'); } return redirect(''); }
コントローラーで読み込む
<?php class HomeController extends Controller { public function __construct() { $this->middleware('old'); } public function index() { return view('home'); } }
rote.phpも足しておこう
<?php Route::post('home', 'HomeController@index'); Route::get('success', 'SuccessController@index');
ここでルートリストの確認
midllewareにoldが追加されてる良さそう!
雑にフォームをwelcome.bladeに設置
{!! Form::open(['url' => 'home', 'method' => 'post']) !!} {!! Form::text('age', 200, ['class' => 'form-control']) !!} {!! Form::submit('Click Me!') !!} {!! Form::close() !!}
これで
home→(middlewareによる年齢フィルター)→succese or root
という流れが出来ました٩(ˊᗜˋ*)و
ミドルウェア動くのは確認はできた 良さそう?
次はミドルウェアbefore,afterについて