Просто чтобы предоставить обновленный ответ для новичков, использующих как минимум Laravel 5.4, я не совсем уверен, когда он был представлен, но теперь вы можете передать параметр массива 'as'
при определении маршрутов для префикса всех имен маршрутов, не затрагивая URI или пространство имен.
Например, я начинаю с новой установки laravel и создам модель Franchising
.
php artisan make:model Franchising
Доступ к этому должен получить как контроллер Front
, так и контроллер Admin
.
php artisan make:controller --resource --model='Franchising' 'Front\FranchisingController'
php artisan make:controller --resource --model='Franchising' 'Admin\FranchisingController'
Это создает следующие файлы:
app/
├── ...
├── Franchising.php
├── Http
│ ├── Controllers
│ │ ├── Admin
│ │ │ └── FranchisingController.php
│ │ ├── ...
│ │ └── Front
│ │ └── FranchisingController.php
│ └── ...
└── ...
Создайте маршруты ресурсов, используя параметр 'as'
для определения префиксов имен маршрутов.
Route::resource(
'franchising',
'Front\FranchisingController',
['as' => 'front']
);
Route::resource(
'admin/franchising',
'Admin\FranchisingController',
['as' => 'admin']
);
Вы можете просмотреть все маршруты с 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 |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
Теперь, что касается вашего конкретного случая использования, я заметил, что вы используете только один маршрут на переднем контроллере, поэтому вместо этого общего решения может быть лучше просто определить этот один маршрут.
Route::name('front.franchising.index')
->get('franchising', 'Front\FranchisingController@index');
Route::resource(
'admin/franchising',
'Admin\FranchisingController',
['as' => 'admin']
);
Что генерирует эти маршруты:
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
| 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 |
+-----------+--------------------------------------+---------------------------+----------------------------------------------------------+
person
Jeff Puckett
schedule
02.03.2017