Я понимаю, что контроллер ресурсов может иметь следующие методы
index show create edit store update destroy
Теперь предположим, что у меня есть следующие действия, которые необходимо выполнить в дополнение к действиям ресурсов:
Являются ли контроллеры ресурсов бесполезными для вышеупомянутых функций? Если я программирую API, я, очевидно, хочу индексировать, показывать, редактировать, создавать, уничтожать … но также и логин, поиск, поиск и т. Д. …
Можно ли маршрутизировать оба типа контроллера? например
Route::group(['prefix' => 'api'], function() { Route::group(['prefix' => 'v1'], function() { // Resource Controller Route::resource('posts', 'Api\V1\PostsResourceController'); // Restful Controller Route::controller('posts', 'Api\V1\PostsController'); }); });
Или я должен просто забыть о контроллере ресурсов и вместо этого использовать спокойный контроллер?
Просто используйте контроллер ресурсов, добавьте эти другие методы к тому же контроллеру и напрямую добавьте маршруты к этим методам :
Route::group(['prefix' => 'api'], function() { Route::group(['prefix' => 'v1', 'namespace' => 'Api\V1'], function() { // Add as many routes as you need... Route::post('login', 'PostsResourceController@login'); Route::get('find', 'PostsResourceController@find'); Route::get('search', 'PostsResourceController@search'); Route::resource('posts', 'PostsResourceController'); }); });
PS Я вообще уклоняюсь от использования Route::controller()
. Это слишком неоднозначно .
одна из проблем, связанных с контроллерами ресурсов, – это когда вы используете именованные маршруты, с префиксами групп все это превращается в большой беспорядок. если вы хотите внести небольшое изменение в свой префикс, вам необходимо внести изменения во все виды и контроллеры. т.е. вы не можете полностью использовать именованные маршруты .
Я следую этой модели при разработке моих приложений для laravel.
Route::group( [ 'prefix' => 'admin' ], function(){ Route::resource('pages', 'PageController', [ 'names' => [ 'show' => 'page', 'edit' => 'page.edit' ], 'only' => [ 'show', 'edit' ] ]); });
так что у меня есть следующие преимущества.
и я могу с легкостью генерировать URL-адреса, используя синтаксис, даже если я вношу изменения в именах префиксов или имен ресурсов,
URL::route('page', array($id))