【问题标题】:Laravel 5 route groups `prefix and `as` and resource controllersLaravel 5 路由组 `prefix 和 `as` 和资源控制器
【发布时间】:2016-02-09 21:14:16
【问题描述】:

我正在使用 Laravel 的路由组来尝试在我的 Routes 文件中停止重复。

我有一个主要组,frontend。这有 namespace Frontend 和 as frontend.

嵌套在该组中的是另一个组。该组有 prefix account 将 /account/ 附加到每条路由。它还有asaccount.。

嵌套组内的路由,我希望是:

  1. frontend.account.home
  2. frontend.account.order.show
  3. frontend.account.order.index

相反,我得到:

  1. frontend.account.home
  2. frontend.account.account.order.index
  3. frontend.account.account.order.show

代码:

Route::group(['as' => 'frontend.', 'namespace' => 'Frontend'], function () {
    Route::group(['prefix' => 'account', 'as' => 'account.', 'namespace' => 'Account'], function () {
        Route::get('home', [
            'as'   => 'home',
            'uses' => 'Home\Controller@get'
        ]);

        Route::resource('order', 'Order\Controller', ['except' => [
            'create',
            'store',
            'update',
            'destroy',
            'edit',
        ]]);
    });
});

【问题讨论】:

  • 尝试从内部Route::group 中删除'namespace' => 'Account',其中前缀为帐户
  • 但是那会停止命名空间的工作?两个冲突的选项是prefix 和as。
  • 删除'as' => 'account.'从你的 Route::group

标签: php laravel laravel-5 laravel-routing laravel-5.2


【解决方案1】:

既然您从 Route::resource 方法中排除了几乎所有路由,为什么不像这样为 index 和 show 创建 2 个单一路由:

// in your routes file, within your nested group :
Route::get('order', ['as' => 'order.index', 'uses' => 'Order\Controller@index' ]);
Route::get('order/{id}', ['as' => 'order.show', 'uses' => 'Order\Controller@show' ]);

【讨论】:

  • 不幸的是,订单路线资源只是一个示例,还有更多的资源将包含所有标准路线。
猜你喜欢
  • 2014-07-08
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 2014-10-08
  • 2016-05-21
  • 2015-07-20
  • 1970-01-01
相关资源
最近更新 更多