Laravel 5.3 Имена маршрутов ресурсов

#php #laravel #laravel-5.3

#php #laravel #laravel-5.3

Вопрос:

Я обновил свое приложение Laravel 5.2 до Laravel 5.3. У меня много маршрутов ресурсов, таких как:

 Route::resource('web/products', 'WebProductController', ['except' => ['show']]);
Route::resource('web/promos',   'WebPromoController',   ['except' => ['show']]);
  

Имена маршрутов, сгенерированные для них до Laravel 5.2, были:

 web.products.index
web.products.create
web.products.store
web.products.edit
web.products.update
web.products.edit
  

Я использовал помощник route() для печати всех маршрутов по его имени. Проблема в том, что теперь Laravel 5.3 генерирует мои маршруты с этими именами:

 products.index
products.create
products.store
products.edit
products.update
products.edit
  

Мне нужно, чтобы они были полностью разделены именами.

Ответ №1:

Вы можете указать параметр «как» в групповой директиве для присвоения всем групповым маршрутам префикса.

 Route::group(['as'=>'web.'], function() {
    Route::resource('web/products', 'WebProductController', ['except' => ['show']]);
    Route::resource('web/promos',   'WebPromoController',   ['except' => ['show']]);
});
  

Также вы можете указать префикс для URL

 Route::group(['as'=>'web.','prefix'=>'web'], function() {
    Route::resource('products', 'WebProductController', ['except' => ['show']]);
    Route::resource('promos',   'WebPromoController',   ['except' => ['show']]);
});
  

Ответ №2:

Я решил это так:

 Route::resource('web/products', 'WebProductController', ['names' => [
    'create' => 'web.products.create'
]]);
  

Ответ №3:

Почему бы не объединить их в группу?

 Route::group(['namespace' => 'Web'], function() {
    Route::resource('web/products', 'ProductController', ['except' => ['show']]);
    Route::resource('web/promos',   'PromoController',   ['except' => ['show']]);
});
  

Комментарии:

1. Это изменяет только область действия контроллеров. Мне нужно, чтобы имена маршрутов были web.products.* вместо products.*

2. Ах, я только что заметил, что вы делаете web/products — есть ли для этого причина? Если вы измените его на web.products , я думаю, это даст вам маршруты, которые вы ищете.