Laravel Route::controller с дополнительными параметрами

Я пытаюсь выяснить, есть ли способ добавить параметры URL-адреса к вызову Route::controller.

Что у меня есть на данный момент для моей панели управления:

Route::group(
    [
        'prefix' => 'admin',
        'namespace' => 'Admin'
    ],
    function() {

        Route::group(
            [
                'prefix' => '',
                'before' => 'auth.admin'
            ],
            function() {

                Route::controller('page', 'PageController');

                Route::controller('article', 'ArticleController');

            }

        );

        Route::controller('/', 'LoginController');

    }
);

Теперь — у каждого из контроллеров будут действия post/getEdit, которые потребуют передачи параметра url id в простом формате /admin/page/edit/{id}.

Мой вопрос: есть ли способ добавить некоторые параметры в метод Route::controller или мне нужно сделать их все, используя подход Route::get/Route::post?

Я знаю, что могу сделать это, добавив два дополнительных случая с get и post над данным вызовом контроллера:

Route::group(
    [
        'prefix' => 'admin',
        'namespace' => 'Admin'
    ],
    function() {

        Route::group(
            [
                'prefix' => '',
                'before' => 'auth.admin'
            ],
            function() {

                Route::get('page/edit/{id}', 'PageController@getEdit');
                Route::post('page/edit/{id}', 'PageController@postEdit');

                Route::controller('page', 'PageController');

                Route::controller('article', 'ArticleController');

            }

        );

        Route::controller('/', 'LoginController');

    }
);

но, возможно, есть лучший подход?



person Sebastian Sulinski    schedule 23.09.2014    source источник


Ответы (1)


Вы можете использовать Route::resource:

Route::resource('resource', 'ResourceController');

Это зарегистрирует следующие маршруты:

GET       /resource                 index   resource.index
GET       /resource/create          create  resource.create
POST      /resource                 store   resource.store
GET       /resource/{resource}      show    resource.show
GET       /resource/{resource}/edit edit    resource.edit
PUT/PATCH /resource/{resource}      update  resource.update
DELETE    /resource/{resource}      destroy resource.destroy

Вы можете использовать его вместе с only или except, чтобы выбрать, какие маршруты следует включить (или исключить):

Route::resource('resource', 'ResourceController', ['only' => ['index', 'show', 'update', 'destroy']]);

Узнайте больше о контроллерах ресурсов Restful в документации Laravel.

Этот пост также может быть интересен: Laravel 4 - Route::resource vs Route ::контроллер. Что использовать?

person Thomas Jensen    schedule 23.09.2014
comment
Итак, я полагаю, что resource будет использоваться для передачи id данной записи. Спасибо. - person Sebastian Sulinski; 23.09.2014
comment
Да, {resource} — это идентификатор записи, который передается контроллеру. - person Thomas Jensen; 23.09.2014