PHP
laravel

LaravelのMulti-Auth時のエラーページの出し分け

エラーページの出し分け処理

裏画面を/backとする。

app\Exceptions\Handler.php
public function render($request, Exception $exception)
{
    $blade_base = '';

    if ($request->segment(1) === 'back')
    {
        $blade_base .= $request->segment(1).'.';
    }

    if ($exception instanceof AccessAuthorizationException)
    {
        return response()->view('error.'.$blade_base.'403', [], 403);
    }

    if ($exception instanceof TokenMismatchException)
    {
        return response()->view('error.'.$blade_base.'419', [], 419);
    }

    if ( ! $this->isHttpException($exception))
    {
        return parent::render($request, $exception);
    }

    $status_code = $exception->getStatusCode();

    switch ($status_code)
    {
        case 403:
            return response()->view('error.'.$blade_base.'403', [], $status_code);
            break;
        case 404:
            return response()->view('error.'.$blade_base.'404', [], $status_code);
            break;
        case 500:
            return response()->view('error.'.$blade_base.'500', [], $status_code);
            break;
        case 503:
            return response()->view('error.'.$blade_base.'503', [], $status_code);
            break;
        default:
            return parent::render($request, $exception);
    }
}

エラー用のテンプレートは以下のように置いておく

表画面のエラーテンプレート

resources\views\error\403.blade.php
resources\views\error\404.blade.php
resources\views\error\419.blade.php
resources\views\error\500.blade.php
resources\views\error\503.blade.php

裏画面のエラーテンプレート

resources\views\error\back\403.blade.php
resources\views\error\back\404.blade.php
resources\views\error\back\419.blade.php
resources\views\error\back\500.blade.php
resources\views\error\back\503.blade.php