https://github.com/bezhansalleh/filament-exceptions
A Simple & Beautiful Pluggable Exception Viewer for FilamentPHP's Admin Panel
https://github.com/bezhansalleh/filament-exceptions
exception-reporter exception-viewer filamentadmin filamentphp laravel plugin
Last synced: 19 days ago
JSON representation
A Simple & Beautiful Pluggable Exception Viewer for FilamentPHP's Admin Panel
- Host: GitHub
- URL: https://github.com/bezhansalleh/filament-exceptions
- Owner: bezhanSalleh
- License: mit
- Created: 2022-09-04T05:40:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-22T16:31:18.000Z (7 months ago)
- Last Synced: 2024-10-29T10:48:12.612Z (7 months ago)
- Topics: exception-reporter, exception-viewer, filamentadmin, filamentphp, laravel, plugin
- Language: PHP
- Homepage:
- Size: 156 KB
- Stars: 152
- Watchers: 4
- Forks: 22
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- awesome-laravel-filament - Other - Exception Handling
- awesome-laravel-filament - Other - Exception Handling
README
# Exception Viewer
A Simple & Beautiful Exception Viewer for FilamentPHP's Admin Panel
* For FilamentPHP 2.x use version 1.x
## Installation
1. You can install the package via composer:
```bash
composer require bezhansalleh/filament-exceptions
```2. Publish and run the migration via:
```bash
php artisan exceptions:install
```3. Register the plugin for the Filament Panel
```php
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\BezhanSalleh\FilamentExceptions\FilamentExceptionsPlugin::make()
]);
}
```4. Activate the plugin by editing your App's Exception Handler as follow:
- **Laravel 11.x+**
Enable it in the `bootstrap/app.php` file
```php
withExceptions(function (Exceptions $exceptions) {
$exceptions->reportable(function (Exception|Throwable $e) {
FilamentExceptions::report($e);
});
})
...
```
- **Laravel 10.x**
```php
reportable(function (Throwable $e) {
if ($this->shouldReport($e)) {
FilamentExceptions::report($e);
}
});...
}
}
```### Configuration Options
When registering the FilamentExceptions plugin, you can chain various methods to customize its behavior. Here are all available configuration options:
#### Navigation
```php
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)
```#### Labels and Search
```php
FilamentExceptionsPlugin::make()
->modelLabel(string | Closure | null $label)
->pluralModelLabel(string | Closure | null $label)
->titleCaseModelLabel(bool | Closure $condition = true)
->globallySearchable(bool | Closure $condition = true)
```#### Tabs Labels and Icons
```php
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)
```#### Mass Pruning Settings
```php
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](https://laravel.com/docs/10.x/scheduling#running-the-scheduler)#### Tenancy Configuration
```php
FilamentExceptionsPlugin::make()
->scopeToTenant(bool | Closure $condition = true)
->tenantOwnershipRelationshipName(string | Closure | null $ownershipRelationshipName)
->tenantRelationshipName(string | Closure | null $relationshipName)
```#### General Configuration
```php
FilamentExceptionsPlugin::make()
->cluster(string | Closure | null $cluster)
->slug(string | Closure | null $slug)
```Example usage:
```php
return $panel
->plugins([
FilamentExceptionsPlugin::make()
->navigationLabel('Error Logs')
->navigationIcon('heroicon-o-bug-ant')
->navigationBadge()
->navigationGroup('System')
->modelPruneInterval(now()->subDays(7))
]);
```
### Custom Exception Model
1. Extend the base model as follow:
```php