📖 Scenario: You are building a simple web application with Laravel. You want to organize your routes by grouping them under a common URL prefix to keep your code clean and easy to manage.
🎯 Goal: Create a route group with the prefix admin and define two routes inside it: one for /dashboard and one for /settings. Each route should return a simple string response.
📋 What You'll Learn
Create a route group with the prefix admin
Inside the group, define a GET route for /dashboard that returns the string 'Admin Dashboard'
Inside the group, define a GET route for /settings that returns the string 'Admin Settings'
💡 Why This Matters
🌍 Real World
Route prefixes help organize URLs in web applications, making it easier to manage related routes like admin pages.
💼 Career
Understanding route groups and prefixes is essential for Laravel developers to write clean, maintainable routing code.
Progress0 / 4 steps
1
Create the initial routes
Create two GET routes outside any group: one for /dashboard that returns 'Dashboard' and one for /settings that returns 'Settings'.
Laravel
Hint
Use Route::get() with the URL and a closure that returns the string.
2
Add the route prefix group
Create a route group with the prefix admin using Route::prefix('admin')->group(function () { ... }); and move the two routes inside this group.
Laravel
Hint
Wrap the routes inside Route::prefix('admin')->group(function () { ... });.
3
Change route responses to indicate admin area
Inside the admin prefix group, change the /dashboard route to return 'Admin Dashboard' and the /settings route to return 'Admin Settings'.
Laravel
Hint
Update the return strings inside each route closure.
4
Add a named route inside the prefix group
Inside the admin prefix group, add a new GET route for /profile that returns 'Admin Profile' and name this route admin.profile using ->name('admin.profile').
Laravel
Hint
Use Route::get('/profile', function () { ... })->name('admin.profile'); inside the group.
Practice
(1/5)
1. What is the main purpose of using Route::prefix() in Laravel?
easy
A. To register routes in a different file
B. To change the HTTP method of routes
C. To define middleware for routes
D. To add a common URL segment to a group of routes
Solution
Step 1: Understand what Route::prefix() does
This method adds a common URL segment to all routes inside the group, making URLs organized.
Step 2: Compare with other options
Changing HTTP methods, middleware, or file registration are done differently, not by prefix.
Final Answer:
To add a common URL segment to a group of routes -> Option D
Quick Check:
Route prefix = common URL part [OK]
Hint: Prefix means adding a shared start to URLs [OK]
Common Mistakes:
Confusing prefix with middleware
Thinking prefix changes HTTP methods
Assuming prefix changes route files
2. Which of the following is the correct syntax to define a route group with the prefix admin using Route::prefix() in Laravel?
easy
A. Route::group(['prefix' => 'admin'], function () { /* routes */ });
B. Route::prefix('admin')->group(function () { /* routes */ });
C. Route::prefix('admin', function () { /* routes */ });
D. Route::group('admin', function () { /* routes */ });
Solution
Step 1: Recall Laravel prefix group syntax
The correct syntax uses Route::prefix('admin')->group(function () { ... });.
Step 2: Identify incorrect options
Route::group(['prefix' => 'admin'], function () { /* routes */ }); uses group() with array instead of prefix(). Route::prefix('admin', function () { /* routes */ }); incorrectly passes closure as second argument to prefix(). Route::group('admin', function () { /* routes */ }); passes string directly to group().
Final Answer:
Route::prefix('admin')->group(function () { /* routes */ }); -> Option B
Quick Check:
Use prefix()->group() for route prefixes [OK]
Hint: Use prefix('name')->group() for clean route groups [OK]
Common Mistakes:
Passing prefix as second argument to prefix()
Using group() without prefix()
Using array syntax incorrectly
3. Given the following Laravel routes code, what URL will respond to the DashboardController@index method?
The prefix 'admin' adds '/admin' before all routes inside the group.
Step 2: Combine prefix and route path
The route path is 'dashboard', so full URL is '/admin/dashboard'.
Final Answer:
/admin/dashboard -> Option A
Quick Check:
Prefix + route path = full URL [OK]
Hint: Add prefix before route path for full URL [OK]
Common Mistakes:
Ignoring prefix and using only route path
Reversing prefix and path order
Assuming prefix replaces route path
4. Identify the error in this Laravel route prefix usage:
Route::prefix('api', function () {
Route::get('users', [UserController::class, 'index']);
});
medium
A. Missing ->group() method after prefix()
B. Prefix should be an array, not a string
C. Route::get() cannot be used inside prefix()
D. UserController::class is not valid here
Solution
Step 1: Check prefix() usage
The prefix() method requires chaining with group() to define routes inside.
Step 2: Identify missing group() call
Here, prefix('api') is called with a function directly, which is invalid syntax.
Final Answer:
Missing ->group() method after prefix() -> Option A
Quick Check:
prefix() must be followed by ->group() [OK]
Hint: Always chain ->group() after prefix() [OK]
Common Mistakes:
Passing closure directly to prefix()
Using array instead of string for prefix
Misplacing route definitions outside group
5. You want to create a route group with prefix api/v1 and middleware auth:sanctum. Which of the following is the correct way to do this using chained prefix() and middleware() methods in Laravel?
hard
A. Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:sanctum'], function () {
Route::get('profile', [ProfileController::class, 'show']);
});
B. Route::middleware('auth:sanctum')->prefix('api/v1', function () {
Route::get('profile', [ProfileController::class, 'show']);
});
C. Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () {
Route::get('profile', [ProfileController::class, 'show']);
});
D. Route::group('api/v1')->middleware('auth:sanctum')->group(function () {
Route::get('profile', [ProfileController::class, 'show']);
});
Solution
Step 1: Understand chaining of prefix and middleware
Laravel allows chaining prefix() and middleware() before group() to apply both settings.
Step 2: Check each option's syntax
Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:sanctum'], function () {
Route::get('profile', [ProfileController::class, 'show']);
}); uses array syntax, not chained methods. Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () {
Route::get('profile', [ProfileController::class, 'show']);
}); correctly chains prefix() and middleware() then calls group(). Route::middleware('auth:sanctum')->prefix('api/v1', function () {
Route::get('profile', [ProfileController::class, 'show']);
}); incorrectly passes closure to prefix(). Route::group('api/v1')->middleware('auth:sanctum')->group(function () {
Route::get('profile', [ProfileController::class, 'show']);
}); misuses group() twice with wrong parameters.
Final Answer:
Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () {
Route::get('profile', [ProfileController::class, 'show']);
}); -> Option C
Quick Check:
Chain prefix and middleware before group() [OK]
Hint: Chain prefix() and middleware() before group() [OK]
Common Mistakes:
Passing closure directly to prefix() or middleware()
Using group() twice incorrectly
Mixing array and method chaining syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.