【问题标题】:Naming of grouped resource route分组资源路由的命名
【发布时间】:2013-11-16 06:39:58
【问题描述】:

我有下面的路由组,里面有一个资源。

Route::group(array( 'prefix' => 'admin' , 'before' => 'admin-auth' ), function() {

   Route::group(array( 'prefix' => 'hosts'), function() {

        Route::resource('/', 'HostsController' );

   });
});

正如我在php artisan routes看到的那样

  | GET /admin/hosts                          | admin.hosts...index   | HostsController@index            | admin-auth
  | GET /admin/hosts/create                   | admin.hosts...create  | HostsController@create           | admin-auth
  | POST /admin/hosts                         | admin.hosts...store   | HostsController@store            | admin-auth
  | GET /admin/hosts/{}                       | admin.hosts...show    | HostsController@show             | admin-auth
  | GET /admin/hosts/{}/edit                  | admin.hosts...edit    | HostsController@edit             | admin-auth
  | PUT /admin/hosts/{}                       | admin.hosts...update  | HostsController@update           | admin-auth
  | PATCH /admin/hosts/{}                     |                       | HostsController@update           | admin-auth
  | DELETE /admin/hosts/{}                    | admin.hosts...destroy | HostsController@destroy          | admin-auth

如何调用路由的链接? 我试过类似的东西

{{route('admin.hosts...show', array($host->id) )}}

但我收到 array_combine() 错误。

编辑

我已经改成这个了。

Route::group(array( 'prefix' => 'admin' , 'before' => 'admin-auth' ), function() {

    Route::resource('/hosts', 'HostsController' );

但我仍然得到一个双点路线名称

 GET /admin/hosts                          | admin..hosts.index    | HostsController@index
 GET /admin/hosts/create                   | admin..hosts.create   | HostsController@create
 POST /admin/hosts                         | admin..hosts.store    | HostsController@store
 GET /admin/hosts/{hosts}                  | admin..hosts.show     | HostsController@show
 GET /admin/hosts/{hosts}/edit             | admin..hosts.edit     | HostsController@edit
 PUT /admin/hosts/{hosts}                  | admin..hosts.update   | HostsController@update
 PATCH /admin/hosts/{hosts}                |                       | HostsController@update
 DELETE /admin/hosts/{hosts}               | admin..hosts.destroy  | HostsController@destroy

现在我可以让它工作了,但这不是很奇怪吗?

【问题讨论】:

    标签: laravel laravel-4 laravel-routing


    【解决方案1】:

    您的主机是您的 /,那么您的资源不需要新组:

    Route::group(array( 'prefix' => 'admin' , 'before' => 'admin-auth' ), function() {
    
       Route::resource('hosts', 'UsersController' );
    
    });
    

    你会得到这样的东西:

    +--------+-----------------------------------------------------+-------------------------------------------+-------------------------------------------------+----------------------------+---------------+
    | Domain | URI                                                 | Name                                      | Action                                          | Before Filters             | After Filters |
    +--------+-----------------------------------------------------+-------------------------------------------+-------------------------------------------------+----------------------------+---------------+
    |        | GET admin/hosts                                     | admin.hosts.index                         | UsersController@index                           | admin-auth                 |               |
    |        | GET admin/hosts/create                              | admin.hosts.create                        | UsersController@create                          | admin-auth                 |               |
    |        | POST admin/hosts                                    | admin.hosts.store                         | UsersController@store                           | admin-auth                 |               |
    |        | GET admin/hosts/{hosts}                             | admin.hosts.show                          | UsersController@show                            | admin-auth                 |               |
    |        | GET admin/hosts/{hosts}/edit                        | admin.hosts.edit                          | UsersController@edit                            | admin-auth                 |               |
    |        | PUT admin/hosts/{hosts}                             | admin.hosts.update                        | UsersController@update                          | admin-auth                 |               |
    

    编辑

    另外,这是正确的路线:

    Route::resource('hosts', 'UsersController' );
    

    不是这个:

    Route::resource('/hosts', 'UsersController' );
    

    【讨论】:

    • 我已经 update 并且我已经测试了你的建议但是为什么我得到双点?
    • paste.laravel.com 你的组,拜托。
    • 从您的资源中删除/
    • 啊,这太棒了!所以我不能将resource 路由放在hosts 组内? paste.laravel.com/14Lp
    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多