geeklearners/laravel-admin
Laravel package for building an admin panel in your Laravel app, offering basic scaffolding for admin routes, views, and UI components to manage application data from a backend interface.
Installation
composer require geeklearners/laravel-admin
php artisan vendor:publish --provider="Geeklearners\Admin\AdminServiceProvider"
php artisan migrate
config/admin.php) and migrations (creates admins table).First Admin User
php artisan admin:create --name="Admin User" --email="admin@example.com" --password="securepassword"
Basic Usage
/admin (configured in config/admin.php).Key Configurations
config/admin.php to customize:
admin_path (default: /admin)guard (default: admin)middleware (e.g., auth:admin)Generate a CRUD Controller
php artisan admin:make:controller Post --model=Post
index, create, store, edit, update, destroy methods.Register the Route
Add to routes/admin.php:
Route::resource('posts', \App\Http\Controllers\Admin\PostController::class);
Access the Panel
/admin/posts to see the auto-generated CRUD interface.Auto-Generated Controllers The package generates controllers with pre-built CRUD logic for Eloquent models.
index(), store()).Form Fields Define fields in the model or controller using fluent syntax:
public function fields()
{
return [
'id',
'title' => 'Title',
'content' => 'Content',
'published_at' => 'Published At|datetime',
];
}
use Geeklearners\Admin\Traits\HasBulkActions;
use Geeklearners\Admin\Traits\HasExport;
deleteSelected() to enable bulk delete.export() to enable CSV/Excel export.// routes/admin.php
Route::resource('posts', PostController::class)->middleware('can:manage,posts');
config/admin.php:
'permissions' => [
'manage' => ['posts', 'users'],
],
admin guard alongside Laravel’s default web guard:
// config/auth.php
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
php artisan vendor:publish --tag=admin-assets
resources/views/admin/ directory.Migration Conflicts
admins table migration may conflict with existing migrations. Run:
php artisan migrate --path=vendor/geeklearners/laravel-admin/database/migrations
before your app’s migrations.Route Caching
php artisan route:clear
Permission Denied
admin guard is properly configured in config/auth.php.CSRF Token Mismatch
Route::middleware(['web', 'admin'])->group(function () { ... });
Log Admin Activity
config/admin.php:
'log_activity' => true,
storage/logs/laravel-admin.log.Dump Generated SQL
DB::enableQueryLog() in your controller to inspect queries:
public function index()
{
DB::enableQueryLog();
$posts = Post::all();
dd(DB::getQueryLog());
}
Override Default Views
resources/views/vendor/admin/ to customize without modifying the package directly.Custom Fields
namespace App\Admin\Fields;
use Geeklearners\Admin\Fields\Field;
class CustomField extends Field
{
public function render()
{
return '<input type="text" name="custom_field">';
}
}
config/admin.php:
'fields' => [
'custom' => \App\Admin\Fields\CustomField::class,
],
Event Listeners
admin.user.created):
// EventServiceProvider
protected $listen = [
'admin.user.created' => [
\App\Listeners\LogAdminCreation::class,
],
];
API Endpoints
Route::prefix('api/admin')->middleware('auth:admin')->group(function () {
Route::get('posts', [PostController::class, 'apiIndex']);
});
How can I help you explore Laravel packages today?