Laravel
Beginner
1 min read
Route Groups and Middleware
Example
<?php
// routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\PostController;
// Group with middleware and prefix
Route::middleware(['auth', 'verified'])->prefix('admin')->name('admin.')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::resource('users', UserController::class);
});
// API versioning group
Route::prefix('api/v1')->middleware('throttle:60,1')->group(function () {
Route::get('/posts', [PostController::class, 'index']);
Route::post('/posts', [PostController::class, 'store']);
});
// Route model binding — Laravel auto-fetches Post by {post} id
Route::get('/posts/{post}', function (\App\Models\Post $post) {
return $post; // 404 if not found automatically
});
// Custom binding key (use slug instead of id)
Route::get('/posts/{post:slug}', [PostController::class, 'show']);
// Fallback route (matches any undefined URL)
Route::fallback(function () {
return response()->view('errors.404', [], 404);
});
Related Resources
Laravel Reference
Complete tag & property list
Laravel How-To Guides
Step-by-step practical guides
Laravel Exercises
Practice what you've learned
More in Laravel