Route groups help organize routes that share common settings like middleware, prefix, or namespace. This keeps your route files clean and easier to manage.
You want to apply the same middleware to many routes, like authentication.
You want to add a common URL prefix to a set of routes, like '/admin'.
You want to group routes that share the same controller namespace.
You want to apply the same route name prefix to a group of routes.
You want to keep related routes together for better readability.
Syntax
Laravel
Route::group(['middleware' => 'auth', 'prefix' => 'admin'], function () {
// Define routes here
});
You pass an array of options as the first argument to Route::group.
The second argument is a closure where you define the grouped routes.
Examples
This group applies the 'auth' middleware to the dashboard route.
Laravel
Route::group(['middleware' => 'auth'], function () {
Route::get('/dashboard', function () {
return'Dashboard';
});
});
This group adds '/admin' before the '/users' route URL, so the full URL is '/admin/users'.
Laravel
Route::group(['prefix' => 'admin'], function () {
Route::get('/users', function () {
return'Admin Users';
});
});
This group applies two middleware and a prefix to the settings route.
Laravel
Route::group(['middleware' => ['auth', 'verified'], 'prefix' => 'account'], function () {
Route::get('/settings', function () {
return'Account Settings';
});
});
Sample Program
This example creates a route group with 'auth' middleware and 'admin' prefix. It defines two routes: '/admin/dashboard' and '/admin/users'. Both require authentication.
Laravel
<?php
use Illuminate\Support\Facades\Route;
Route::group(['middleware' => 'auth', 'prefix' => 'admin'], function () {
Route::get('/dashboard', function () {
return'Admin Dashboard';
});
Route::get('/users', function () {
return'User List';
});
});
OutputSuccess
Important Notes
Route groups do not create new URLs themselves; they modify the routes inside them.
You can nest route groups to combine multiple settings.
Use route groups to keep your routes organized and avoid repeating code.
Summary
Route groups let you apply shared settings to many routes at once.
Common uses include middleware, URL prefixes, and namespaces.
They keep your route files cleaner and easier to read.
Practice
(1/5)
1. What is the main purpose of using Route::group() in Laravel?
easy
A. To register routes only for API requests
B. To define a single route with multiple HTTP methods
C. To create a route that redirects to another URL
D. To apply shared settings like middleware or prefixes to multiple routes at once
Solution
Step 1: Understand Route Group Purpose
Route groups allow you to bundle routes that share common attributes like middleware or URL prefixes.
Step 2: Compare with Other Options
Options A, B, and C describe different routing features, not the grouping concept.
Final Answer:
To apply shared settings like middleware or prefixes to multiple routes at once -> Option D
Quick Check:
Route groups = shared settings [OK]
Hint: Route groups bundle routes with common settings fast [OK]
Common Mistakes:
Thinking route groups define single routes
Confusing route groups with route redirects
Assuming route groups are only for API routes
2. Which of the following is the correct syntax to create a route group with a prefix admin in Laravel?
easy
A. Route::group('prefix' => 'admin', function () { /* routes */ });
B. Route::group(['prefix' => 'admin'], function () { /* routes */ });
C. Route::group(['admin' => 'prefix'], function () { /* routes */ });
D. Route::group(function () { prefix('admin'); /* routes */ });
Solution
Step 1: Recall Route Group Syntax
Route groups use an array of attributes as the first argument, e.g., ['prefix' => 'admin'].
Step 2: Identify Correct Array Syntax
Route::group(['prefix' => 'admin'], function () { /* routes */ }); correctly uses the array with 'prefix' key and a closure function.
Final Answer:
Route::group(['prefix' => 'admin'], function () { /* routes */ }); -> Option B
Quick Check:
Array with 'prefix' key = correct syntax [OK]
Hint: Use array with 'prefix' key inside Route::group [OK]
Common Mistakes:
Missing array brackets around attributes
Swapping key and value in array
Trying to call prefix() inside the closure
3. Given the following route group code, what URL will respond to the Route::get('dashboard', ...) route?
Route::group(['prefix' => 'admin'], function () {
Route::get('dashboard', function () {
return 'Admin Dashboard';
});
});
medium
A. /admin/dashboard
B. /admin
C. /dashboard
D. /dashboard/admin
Solution
Step 1: Understand Prefix Effect
The 'prefix' => 'admin' adds '/admin' before all routes inside the group.
Step 2: Combine Prefix and Route URI
The route URI is 'dashboard', so combined URL is '/admin/dashboard'.
Final Answer:
/admin/dashboard -> Option A
Quick Check:
Prefix + route URI = /admin/dashboard [OK]
Hint: Prefix adds before route URI in URL [OK]
Common Mistakes:
Ignoring the prefix and using only route URI
Appending prefix after route URI
Confusing route name with URL
4. Identify the error in this route group code:
Route::group(['middleware' => 'auth'], function {
Route::get('profile', function () {
return 'User Profile';
});
});
medium
A. Missing parentheses after function keyword
B. Middleware should be an array, not a string
C. Route::group cannot use middleware
D. Route URI 'profile' is invalid
Solution
Step 1: Check Closure Syntax
The anonymous function must have parentheses: function() { ... }.
Step 2: Validate Middleware Usage
Middleware can be a string or array, so that is correct here.
Final Answer:
Missing parentheses after function keyword -> Option A
Quick Check:
Anonymous function needs () after function [OK]
Hint: Always add () after function keyword for closures [OK]
Common Mistakes:
Omitting parentheses in anonymous functions
Thinking middleware must be array always
Assuming route URI 'profile' is invalid
5. You want to create a route group with prefix api and middleware auth:api. Inside it, you define a route GET /users that returns a JSON list of users. Which is the correct way to write this in Laravel?
hard
A. Route::middleware('auth:api')->group(['prefix' => 'api'], function () {
Route::get('users', function () {
return response()->json(['users' => []]);
});
});
B. Route::group(['prefix' => 'api'], function () {
Route::middleware('auth:api')->get('users', function () {
return ['users' => []];
});
});
C. Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
Route::get('users', function () {
return response()->json(['users' => []]);
});
});
D. Route::group(['middleware' => 'auth:api'], function () {
Route::prefix('api')->get('users', function () {
return response()->json(['users' => []]);
});
});
Solution
Step 1: Combine Prefix and Middleware in One Group
Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
Route::get('users', function () {
return response()->json(['users' => []]);
});
}); correctly passes both 'prefix' and 'middleware' as keys in the attributes array.
Step 2: Check Route Definition Inside Group
The route uses Route::get with URI 'users' and returns JSON response properly.
Step 3: Verify Other Options
Route::group(['prefix' => 'api'], function () {
Route::middleware('auth:api')->get('users', function () {
return ['users' => []];
});
}); applies middleware only to the route, not the group prefix. Route::middleware('auth:api')->group(['prefix' => 'api'], function () {
Route::get('users', function () {
return response()->json(['users' => []]);
});
}); has wrong group syntax. Route::group(['middleware' => 'auth:api'], function () {
Route::prefix('api')->get('users', function () {
return response()->json(['users' => []]);
});
}); misuses prefix inside the route.
Final Answer:
Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
Route::get('users', function () {
return response()->json(['users' => []]);
});
}); -> Option C
Quick Check:
Group attributes array with prefix and middleware [OK]
Hint: Put prefix and middleware together in group attributes array [OK]
Common Mistakes:
Splitting prefix and middleware into separate calls incorrectly
Misplacing prefix() inside route closure
Using middleware() outside group incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.