Install the package via Composer:
composer require eckinox/address-bundle
Publish the bundle's configuration and migrations:
php artisan vendor:publish --provider="Eckinox\AddressBundle\AddressServiceProvider"
php artisan migrate
The package now dynamically sets AJAX routes based on the firewall configuration (introduced in v5.1.0). Verify your config/address-bundle.php includes proper firewalls settings for API routes:
'firewalls' => [
'api' => ['ajax' => true], // Enable AJAX for API routes
],
Test AJAX functionality by calling protected endpoints (e.g., GET /api/addresses).
Leverage the new firewall-based AJAX route system to:
ajax: true in the firewall config.Route::get('/addresses', [AddressController::class, 'index'])
->middleware(['web', 'address.firewall:api']); // Uses 'api' firewall
X-Requested-With: XMLHttpRequest header or use the address-bundle:ajax middleware.fetch('/api/addresses', {
headers: { 'X-Requested-With': 'XMLHttpRequest' }
});
422 for validation errors).api firewall.Eckinox\AddressBundle\Http\Resources\AddressResource for custom JSON responses.Eckinox\AddressBundle\Http\Requests\StoreAddressRequest as a base for validation logic.ajax: true in the firewall config will break AJAX routes.config/address-bundle.php and test with:
php artisan address:test-firewall api
web firewall may still require CSRF tokens unless explicitly excluded.csrf_exclude middleware or disable CSRF for API firewalls:
'firewalls' => [
'api' => ['ajax' => true, 'csrf' => false],
],
php artisan route:clear
X-Requested-With is sent.app/Providers/AddressServiceProvider.php to debug route assignment:
\Log::debug('Firewall config:', ['config' => config('address-bundle.firewalls')]);
php artisan route:list to verify AJAX routes are registered under the correct firewall.php artisan vendor:publish --tag="address-bundle-config"
address.firewall middleware in app/Http/Kernel.php for custom logic:
'address.firewall' => \App\Http\Middleware\CustomAddressFirewall::class,
address.firewall.assigned events to log or modify route assignments:
Event::listen('address.firewall.assigned', function ($route, $firewall) {
\Log::info("Route {$route->uri()} assigned to firewall {$firewall}");
});
How can I help you explore Laravel packages today?