black-paradise / laravel-admin
Laravel adapter for BPAdmin — config-driven CRUD admin panel (v3)
Requires
- php: ^8.2
- black-paradise/core-admin: ^1.0.3
- laravel/framework: ^11.0|^12.0|^13.0
Requires (Dev)
- driftingly/rector-laravel: ^2.0
- larastan/larastan: ^3.0
- laravel/pint: ^1.13
- orchestra/testbench: ^11.1
- pestphp/pest: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^12.5
- rector/rector: ^2.0
This package is auto-updated.
Last update: 2026-06-06 18:31:11 UTC
README
Laravel 11/12/13 adapter for BPAdmin v3. Provides Eloquent repository/mutator, CRUD controllers, service provider, and route wiring. Requires bp-admin-core (pure PHP domain layer).
Installation
composer require black-paradise/laravel-admin
Publish the config:
php artisan vendor:publish --tag=bpadmin-config
Scaffold entity definition stubs:
php artisan bpadmin:install
Configuration
All options live in config/bpadmin.php. Key keys:
| Key | Default | Description |
|---|---|---|
prefix |
'admin' |
URL prefix for all admin routes |
middleware |
['web'] |
Middleware applied to all admin routes |
guard |
'web' |
Laravel auth guard |
storage_disk |
'public' |
Filesystem disk for file uploads |
per_page |
15 |
Default pagination size |
Middleware & CSRF
BPAdmin routes use config('bpadmin.middleware', ['web']). The default web
middleware group includes VerifyCsrfToken. If you override
bpadmin.middleware, preserve VerifyCsrfToken — using only api will
silently strip CSRF protection from every admin form (login, create, update,
delete).
To add custom middleware while keeping CSRF, append rather than replace:
config(['bpadmin.middleware' => ['web', 'auth.custom']]).
Entity Definitions
Create App\BPAdmin\{Name} classes extending EntityDefinition:
use BlackParadise\CoreAdmin\EntityDefinition; use BlackParadise\CoreAdmin\Domain\Fields\TextField; use BlackParadise\CoreAdmin\Domain\Fields\BooleanField; class Users extends EntityDefinition { public string $model = \App\Models\User::class; public function fields(): array { return [ TextField::make('name')->required()->searchable(), TextField::make('email')->required(), BooleanField::make('is_active'), ]; } }
DashboardServiceProvider auto-discovers all EntityDefinition subclasses in app/BPAdmin/ at boot.
License
MIT