Just to provide an updated answer for newcomers using at least Laravel 5.4, I'm not exactly sure when it was introduced, but you can now pass the array option 'as'
when defining routes to prefix all the route names without affecting the URI or namespace.
For example, I'm starting with a fresh laravel installation and will create the Franchising
model.
php artisan make:model Franchising
This needs to be accessed by both a Front
controller and an Admin
controller.
php artisan make:controller --resource --model='Franchising' 'Front\FranchisingController'
php artisan make:controller --resource --model='Franchising' 'Admin\FranchisingController'
This creates the following files:
app/
├── ...
├── Franchising.php
├── Http
│ ├── Controllers
│ │ ├── Admin
│ │ │ └── FranchisingController.php
│ │ ├── ...
│ │ └── Front
│ │ └── FranchisingController.php
│ └── ...
└── ...
Create the resource routes using the 'as'
option to define route name prefixes.
Route::resource(
'franchising',
'Front\FranchisingController',
['as' => 'front']
);
Route::resource(
'admin/franchising',
'Admin\FranchisingController',
['as' => 'admin']
);
You can view all routes with artisan:
php artisan route:list
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
| Method | URI | Name | Action |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
| GET|HEAD | admin/franchising | admin.franchising.index | App\Http\Controllers\Admin\FranchisingController@index |
| POST | admin/franchising | admin.franchising.store | App\Http\Controllers\Admin\FranchisingController@store |
| GET|HEAD | admin/franchising/create | admin.franchising.create | App\Http\Controllers\Admin\FranchisingController@create |
| GET|HEAD | admin/franchising/{franchising} | admin.franchising.show | App\Http\Controllers\Admin\FranchisingController@show |
| PUT|PATCH | admin/franchising/{franchising} | admin.franchising.update | App\Http\Controllers\Admin\FranchisingController@update |
| DELETE | admin/franchising/{franchising} | admin.franchising.destroy | App\Http\Controllers\Admin\FranchisingController@destroy |
| GET|HEAD | admin/franchising/{franchising}/edit | admin.franchising.edit | App\Http\Controllers\Admin\FranchisingController@edit |
| GET|HEAD | franchising | front.franchising.index | App\Http\Controllers\Front\FranchisingController@index |
| POST | franchising | front.franchising.store | App\Http\Controllers\Front\FranchisingController@store |
| GET|HEAD | franchising/create | front.franchising.create | App\Http\Controllers\Front\FranchisingController@create |
| GET|HEAD | franchising/{franchising} | front.franchising.show | App\Http\Controllers\Front\FranchisingController@show |
| PUT|PATCH | franchising/{franchising} | front.franchising.update | App\Http\Controllers\Front\FranchisingController@update |
| DELETE | franchising/{franchising} | front.franchising.destroy | App\Http\Controllers\Front\FranchisingController@destroy |
| GET|HEAD | franchising/{franchising}/edit | front.franchising.edit | App\Http\Controllers\Front\FranchisingController@edit |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
Now for your specific use case, I noticed that you are only using one route on the front controller, so instead of this general solution, it might actually be better to simply define that one route.
Route::name('front.franchising.index')
->get('franchising', 'Front\FranchisingController@index');
Route::resource(
'admin/franchising',
'Admin\FranchisingController',
['as' => 'admin']
);
Which generates these routes:
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
| Method | URI | Name | Action |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
| GET|HEAD | admin/franchising | admin.franchising.index | App\Http\Controllers\Admin\FranchisingController@index |
| POST | admin/franchising | admin.franchising.store | App\Http\Controllers\Admin\FranchisingController@store |
| GET|HEAD | admin/franchising/create | admin.franchising.create | App\Http\Controllers\Admin\FranchisingController@create |
| GET|HEAD | admin/franchising/{franchising} | admin.franchising.show | App\Http\Controllers\Admin\FranchisingController@show |
| PUT|PATCH | admin/franchising/{franchising} | admin.franchising.update | App\Http\Controllers\Admin\FranchisingController@update |
| DELETE | admin/franchising/{franchising} | admin.franchising.destroy | App\Http\Controllers\Admin\FranchisingController@destroy |
| GET|HEAD | admin/franchising/{franchising}/edit | admin.franchising.edit | App\Http\Controllers\Admin\FranchisingController@edit |
| GET|HEAD | franchising | front.franchising.index | App\Http\Controllers\Front\FranchisingController@index |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+