Laravel Route ::带有附加参数的控制器

时间:2014-09-23 08:42:40

标签: laravel-4 laravel-routing

我试图弄清楚是否有一种方法可以将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操作,这需要以id的简单格式传递url /admin/page/edit/{id}参数。

我的问题是 - 有没有办法可以在Route :: controller方法中添加一些参数,还是我必须使用Route::get / Route::post方法完成所有这些?

我知道我可以通过在给定的控制器调用之上添加两个getpost的额外案例来实现:

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');

    }
);

但也许有更好的方法?


1 个答案:

答案 0 :(得分: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

您可以与onlyexcept一起使用,以选择要包含(或排除)的路线:

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

Laravel documentation中阅读有关restful资源控制器的更多信息。

这篇文章也可能很有趣:Laravel 4 - Route::resource vs Route::controller. Which to use?