Используя Laravel 4.2, можно ли присвоить имя маршруту контроллера ресурсов? Мой маршрут определяется следующим образом:
Route::resource('faq', 'ProductFaqController');
Я попробовал добавить опцию имени на маршрут следующим образом:
Route::resource('faq', 'ProductFaqController', array("as"=>"faq"));
Однако, когда я ударяю маршрут / faq и размещаю {{ Route::currentRouteName() }}
на мой взгляд, он faq.faq.index
а не только faq
.
Когда вы используете маршрут контроллера ресурсов, он автоматически генерирует имена для каждого отдельного маршрута, который он создает. Route::resource()
– это, в основном, вспомогательный метод, который затем генерирует для вас отдельные маршруты, а не вам нужно определять каждый маршрут вручную.
Вы можете просмотреть названия маршрутов, созданные путем ввода php artisan routes
в Laravel 4 или php artisan route:list
в Laravel 5 в ваш терминал / консоль. Вы также можете просмотреть типы имен маршрутов, сгенерированных на странице документов контроллера ресурсов ( Laravel 4.x | Laravel 5.x ).
Существует два способа изменить имена маршрутов, сгенерированные контроллером ресурсов:
Поместите массив names
как часть третьего параметра $options
array, причем каждый ключ является методом контроллера ресурсов (индекс, хранилище, редактирование и т. Д.), А значение – имя, которое вы хотите передать маршруту.
Route::resource('faq', 'ProductFaqController', [ 'names' => [ 'index' => 'faq', 'store' => 'faq.new', // etc... ] ]);
Укажите опцию as
для определения префикса для каждого имени маршрута.
Route::resource('faq', 'ProductFaqController', [ 'as' => 'prefix' ]);
Это даст вам маршруты, такие как prefix.faq.index
, prefix.faq.store
и т. Д.