A Simple & Beautiful Exception Viewer for FilamentPHP's Admin Panel
composer require bezhansalleh/filament-exceptions
php artisan exceptions:install
public function panel(Panel $panel): Panel{ return $panel ->plugins([ \BezhanSalleh\FilamentExceptions\FilamentExceptionsPlugin::make() ]);}
bootstrap/app.php
file
<?php use BezhanSalleh\FilamentExceptions\FilamentExceptions;use Illuminate\Foundation\Application;... return Application::configure(basePath: dirname(__DIR__)) ... ->withExceptions(function (Exceptions $exceptions) { $exceptions->reportable(function (Exception|Throwable $e) { FilamentExceptions::report($e); }); }) ...
<?php namespace App\Exceptions; use BezhanSalleh\FilamentExceptions\FilamentExceptions; class Handler extends ExceptionHandler{ ... public function register() { $this->reportable(function (Throwable $e) { if ($this->shouldReport($e)) { FilamentExceptions::report($e); } }); ... }}
When registering the FilamentExceptions plugin, you can chain various methods to customize its behavior. Here are all available configuration options:
FilamentExceptionsPlugin::make() ->navigationBadge(bool | Closure $condition = true) ->navigationBadgeColor(string | array | Closure $color) ->navigationGroup(string | Closure | null $group) ->navigationParentItem(string | Closure | null $item) ->navigationIcon(string | Closure | null $icon) ->activeNavigationIcon(string | Closure | null $icon) ->navigationLabel(string | Closure | null $label) ->navigationSort(int | Closure | null $sort) ->registerNavigation(bool | Closure $shouldRegisterNavigation) ->subNavigationPosition(SubNavigationPosition | Closure $position)
FilamentExceptionsPlugin::make() ->modelLabel(string | Closure | null $label) ->pluralModelLabel(string | Closure | null $label) ->titleCaseModelLabel(bool | Closure $condition = true) ->globallySearchable(bool | Closure $condition = true)
FilamentExceptionsPlugin::make() ->activeTab(int $tab) // 1 = Exception, 2 = Headers, 3 = Cookies, 4 = Body, 5 = Queries ->bodyTabIcon(string $icon) ->bodyTabLabel(string $label) ->cookiesTabIcon(string $icon) ->cookiesTabLabel(string $label) ->exceptionTabIcon(string $icon) ->exceptionTabLabel(string $label) ->headersTabIcon(string $icon) ->headersTabLabel(string $label) ->queriesTabIcon(string $icon) ->queriesTabLabel(string $label)
FilamentExceptionsPlugin::make() ->modelPruneInterval(Carbon $interval)
Note This requires laravel scheduler to be setup and configured in order to work. You can see how to do that here Running The Scheduler
FilamentExceptionsPlugin::make() ->scopeToTenant(bool | Closure $condition = true) ->tenantOwnershipRelationshipName(string | Closure | null $ownershipRelationshipName) ->tenantRelationshipName(string | Closure | null $relationshipName)
FilamentExceptionsPlugin::make() ->cluster(string | Closure | null $cluster) ->slug(string | Closure | null $slug)
Example usage:
return $panel ->plugins([ FilamentExceptionsPlugin::make() ->navigationLabel('Error Logs') ->navigationIcon('heroicon-o-bug-ant') ->navigationBadge() ->navigationGroup('System') ->modelPruneInterval(now()->subDays(7)) ]);
<?php namespace App\Models; use BezhanSalleh\FilamentExceptions\Models\Exception as BaseException; class MyCustomException extends BaseException{ ...}
boot()
method for instance AppServiceProvider
:use App\Models\MyCustomException;use BezhanSalleh\FilamentExceptions\FilamentExceptions;... public function boot() { FilamentExceptions::model(MyCustomException::class); }...
By default the plugin uses the default theme of Filamentphp, but if you are using a custom theme then include the plugins view path into the content array of your tailwind.config.js file:
export default { content: [ // ... './vendor/bezhansalleh/filament-exceptions/resources/views/**/*.blade.php', ], // ...}
Publish the translations with
php artisan vendor:publish --tag=filament-exceptions-translations
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.
Bezhan Salleh, an expert full-stack developer, shines in the open-source arena with his suite of popular plugins for the Filament community. His standout creation, the Shield plugin, reigns as the most starred and top-ranked open-source plugin, underscoring Bezhan's knack for crafting powerful tools. With a deep passion for technology and innovation, Bezhan consistently delivers with a commitment to excellence.