arielmejiadev/inertiajs-error-page

It adds a Vue component to load error page with the beautiful Illustrations used on Laravel 5.7 with TailwindCSS.

1.0.0 2020-11-30 08:58 UTC

This package is auto-updated.

Last update: 2024-11-29 06:22:25 UTC


README

Latest Version on Packagist Total Downloads

It adds a vue component to load error pages with the beautiful Illustrations of Laravel 5.7 using TailwindCSS.

Installation

You can install the package via composer:

composer require arielmejiadev/inertiajs-error-page

Publish files

php artisan vendor:publish --tag=inertiajs-errors

Usage

Go to "app/Exceptions/Handler.php" and override the render method and add another custom method:

public function render($request, Throwable $exception)
{
    $response = parent::render($request, $exception);

    if ($this->thereAreErrorsInProduction($response)) {

        return \Inertia\Inertia::render('Errors/Error', [
            'status' => $response->status(),
            'message' => $exception->getMessage(),
            'home' => config('app.url'),
        ])->toResponse($request)->setStatusCode($response->status());
    } else if ($response->status() === 419) {
        return back()->with([
            'message' => 'The page expired, please try again.',
        ]);
    }

    return $response;
}

public function thereAreErrorsInProduction($response)
{
    return \Illuminate\Support\Facades\App::environment('production') && in_array($response->status(), [500, 503, 404, 403, 401, 429]);
}

Test error pages locally

In your env file change:

APP_ENV=production
  • Remember

If you are using Inertia Stack you need to compile your assets

npm run watch

You can test different code responses, the easiest way is to search a route that does not exists in your project :) to get a 404.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email arielmejiadev@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.