When you use a resource controller route, it automatically generates names for each individual route that it creates. Route::resource() is basically a helper method that then generates individual routes for you, rather than you needing to define each route manually.
You can view the route names generated by running php artisan route:list in your terminal/console. You can also see the types of route names generated on the resource controller docs page.
Here are the ways you can modify the names for resource controller routes:
Change a single action's name entirely:
Route::resource('faq', 'ProductFaqController')
->name('index', 'list');
// GET faq -> list
Note that the original faq. prefix is NOT included when using name() on a single resource method. You have to replace this yourself.
Change multiple actions' names entirely:
You can call name() multiple times fluently:
Route::resource('faq', 'ProductFaqController')
->name('index', 'faq.list')
->name('destroy', 'faq.delete');
// GET faq -> faq.list
// DELETE faq/{faq} -> faq.delete
OR, you can call names() and pass an array of methods and their names:
Route::resource('faq', 'ProductFaqController')
->names([
'index' => 'faq.list',
'destroy' => 'faq.delete',
]);
// GET faq -> faq.list
// DELETE faq/{faq} -> faq.delete
Note that this also replaces the entire name and does not include the original faq. prefix. I included it here as an example of keeping the faq. prefix but changing the method name.
Change only the resource segment of all method names:
Call the names() method, passing a string of the desired resource segment instead of an array:
Route::resource('faq', 'ProductFaqController')
->names('productfaq');
// GET faq -> productfaq.index
// POST faq -> productfaq.store
// etc...
The new segment can include periods if it makes sense for your organization:
Route::resource('faq', 'ProductFaqController')
->names('product.faq');
// GET faq -> product.faq.index
// POST faq -> product.faq.store
// etc...
Add the same prefix to every route name:
See Route Name Prefixes:
Route::name('prefix')->group(function () {
Route::resource('faq', 'ProductFaqController');
});
// GET faq -> prefix.faq.index
// POST faq -> prefix.faq.store
// etc...
Add a URI prefix and route name prefix to the whole resource:
See Route Group Prefixes, and include an as() call to modify the route names:
Route::prefix('admin')->as('admin.')->group(function () {
Route::resource('faq', 'ProductFaqController');
});
// GET admin/faq -> admin.faq.list
// POST admin/faq -> admin.faq.create
// etc...