Само за да осигуря актуализиран отговор за новодошлите, използващи поне 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