novius / laravel-filament-redirect-manager
This package provides an interface to manage redirects with Filament in Laravel applications.
Package info
github.com/novius/laravel-filament-redirect-manager
pkg:composer/novius/laravel-filament-redirect-manager
Fund package maintenance!
Requires
- php: >=8.2.0
- filament/filament: ^4.0 | ^5.0
- spatie/laravel-missing-page-redirector: ^2.10
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^v1.21.1
- orchestra/testbench: ^9.0 | ^10.3 | ^11.0
- pestphp/pest: ^3.0 | ^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel Filament Redirect Manager
Introduction
This package provides an interface to manage redirects with Laravel Filament Redirect Manager in Laravel Filament.
Requirements
- Laravel Filament >= 4
- Laravel >= 11.0
- PHP >= 8.2
Installation
Composer
Install the package via composer:
composer require novius/laravel-filament-redirect-manager
Middleware
Next, prepend/append the Spatie\MissingPageRedirector\RedirectsMissingPages middleware to your global middleware stack:
// bootstrap/app.php ->withMiddleware(function (Middleware $middleware) { $middleware->append([ \Spatie\MissingPageRedirector\RedirectsMissingPages::class, ]); })
Filament plugin
Add the LaravelFilamentRedirectManager plugin in your Filament Panel
use Novius\LaravelFilamentRedirectManager\LaravelFilamentRedirectManager; class AdminFilamentPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugins([ // ... LaravelFilamentRedirectManager::make(), // ... ]) // ... ; } }
Lang files
If you want to customize the lang files, you can publish them with:
php artisan vendor:publish --provider="Novius\LaravelFilamentRedirectManager\RedirectManagerServiceProvider" --tag="lang"
Usage
This package allows you to manage redirects in a Laravel application through a Filament interface.
Adding a Redirect
To add a redirect, use the Filament interface provided by the package. You can configure the following fields:
- Original URL (from): The relative URL to redirect (e.g., /old-url).
- Redirection URL (to): The absolute or relative URL to redirect to (e.g., https://www.site.com/new-url or /new-url).
Redirects by locale
On a site with one domain or one prefix per locale, the same old path can lead to a different page in each locale
(/legal-notice.html on www.site.fr and on www.site.com). A redirect can then be limited to a locale.
Publish the config and list the locales of the redirects:
php artisan vendor:publish --provider="Novius\LaravelFilamentRedirectManager\RedirectManagerServiceProvider" --tag="config"
// config/laravel-filament-redirect-manager.php 'locales' => [ 'fr' => 'Français', 'en' => 'English', ], 'locale_resolver' => \App\Redirects\RequestLocaleResolver::class,
The Filament form and list then show a « Locale » field and filter. A redirect without locale applies to every
locale; for the same path, the redirect of the locale of the request wins. With locales empty (the default), the
redirects have no locale and the behaviour is unchanged.
The locale of the request comes from the locale_resolver (Contracts\LocaleResolver). The default one takes the
locale of the application, but the middleware that sets it usually belongs to the routes and does not run for a path
that no route matches: on such a site, write a resolver that reads the locale from the request (its domain or its
prefix).
Lint
Lint your code with Laravel Pint using:
composer lint
Static analysis
Analyse your code with PHPStan using:
composer analyse
Tests
Run the tests with Pest using:
composer test
Licence
This package is under GNU Affero General Public License v3 or (at your option) any later version.