beta

LumenのミドルウェアでviewをHTTPレスポンスコード付きで返す

Lumenのミドルウェアで何かの判定を入れて、そのままコントローラに渡さないでviewで表示に持っていきたい時に、HTTPレスポンスコードを付与する方法がわからなかったので、調べました。

公開日:2018年8月27日

Laravelのドキュメントによると・・・

view()の第3引数に数字を入れるとレスポンスコードを返すみたいなんですが、Lumenだと動きません。

HTTPレスポンス 5.3 Laravel

return response()
            ->view('hello', $data, 200)
            ->header('Content-Type', $type);

これで行けるはずなんですが、動きません。

view()とresponse()を入れ子にすれば動く

public function handle($request, Closure $next, $guard = null)
{
    //何かの判定
    if($var === FALSE){
        return response(view('layouts.hogehoge', $data),503);
    }
}

これでいけました。

view()をresponse()で入れ子にして、第2引数にレスポンスコードを入れれば良いみたいです。