An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        


filament-exceptions-art



FILAMENT 8.x


Packagist


Tests Passing


Code Style Passing


Downloads

# 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