indexgo
login

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

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

作成者:Ssさん 公開日:2018年8月27日 16時40分 更新日:2018年8月27日 17時13分

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

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

HTTPレスポンス 5.3 Laravel

https://readouble.com/laravel/5.3/ja/responses.html

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

できたコード

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

これでいけました。

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

参考

Good SoSo
When trying to use the view method on the response helper just like the docs state, like: return response()->view('page', $data); i get a fatal error Fatal error: Call to undefined method Laravel\Lumen\Http\ResponseFactory::view() It see...