martinpetricko/filament-sentry-feedback
composer require martinpetricko/filament-sentry-feedback
php artisan vendor:publish --tag="filament-sentry-feedback:config"
config/sentry.php with DSN and SDK setup).// app/Providers/Filament/AdminPanelProvider.php
public function panel(Panel $panel): Panel
{
return $panel
->widgets([
\MartinPetricko\FilamentSentryFeedback\Widgets\SentryFeedbackWidget::class,
]);
}
Default Integration:
panel()->widgets().Customizing Appearance:
Conditional Display:
SentryFeedbackWidget::make()
->visible(fn () => auth()->user()->can('report_feedback')),
Event Handling:
sentry.event in Laravel).Multi-Tenant Support:
SentryFeedbackWidget::make()
->sentryContext(fn () => ['tenant_id' => auth()->user()->tenant->id]),
composer.json constraints).$this->mock(Sentry::class)->shouldReceive('captureMessage');
Missing Sentry Config:
config/sentry.php and environment variables (e.g., SENTRY_DSN).CORS Issues:
Widget Not Rendering:
Rate Limiting:
Sentry\State\SdkNotInitialized exceptions gracefully.Log Sentry Events: Add a Laravel event listener to log feedback submissions:
// app/Listeners/LogSentryFeedback.php
public function handle($event)
{
Log::info('Sentry Feedback', $event->getExtraContext());
}
Register it in EventServiceProvider.
Inspect Widget Output:
Use browser dev tools to verify the widget’s HTML/JS is loaded. Check for data-testid attributes (e.g., sentry-feedback-widget).
Custom Feedback Fields:
Override the widget’s Blade template (resources/views/vendor/filament-sentry-feedback/widget.blade.php) to add fields like:
<x-filament-sentry-feedback::widget>
<x-filament::section>
<x-filament::input name="custom_field" type="text" />
</x-filament::section>
</x-filament-sentry-feedback::widget>
Dynamic Sentry Context: Extend the widget to inject dynamic data:
SentryFeedbackWidget::make()
->sentryContext(fn () => [
'user_id' => auth()->id(),
'ip' => request()->ip(),
]),
Post-Submission Actions:
Hook into Sentry’s event callback to trigger Laravel logic:
Sentry::extend(function ($sentry) {
$sentry->event(function ($event) {
if ($event->getLevel() === 'info' && str_starts_with($event->getMessage(), '[Feedback]')) {
// Trigger a Laravel job/notification
}
});
});
Localization: Publish and extend translations:
php artisan vendor:publish --tag="filament-sentry-feedback:lang"
Override in resources/lang/en/filament-sentry-feedback.php.
How can I help you explore Laravel packages today?