Laravel 5 - 休息

Laravel 5 - Rest

早上好, 我正在开发一个 laravel 5 类似社交网络的应用程序,我正在尝试使用 Restfull 控制器,但我发现了一个问题

如何避免用户的资源?

我的意思是,我该怎么做:

Route::resource('{username}', 'UserController');

而不是这个:

Route::resource('user/{username}´, 'UserController');

第一个带我到UserController中的索引方法,但它必须带我显示方法,以{username}作为id参数。

因此我会制作嵌套资源 // 用户照片索引

Route::resource('{username}/photos´, 'UserPhotosController');

// 显示一张照片 (photo_id)

Route::resource('{username}/photos/photo_id´, 'UserPhotosController');

有什么想法吗?

定义时:Route::resource('{username}', 'UserController');

这些是由 Laravel:

生成的路由
| GET|HEAD | {username}                     | {username}.index     | UserController@index   |
| GET|HEAD | {username}/create              | {username}.create    | UserController@create  |
| POST     | {username}                     | {username}.store     | UserController@store   |
| GET|HEAD | {username}/{{username}}        | {username}.show      | UserController@show    |
| GET|HEAD | {username}/{{username}}/edit   | {username}.edit      | UserController@edit    |
| PUT      | {username}/{{username}}        | {username}.update    | UserController@update  |
| PATCH    | {username}/{{username}}        |                      | UserController@update  |
| DELETE   | {username}/{{username}}        | {username}.destroy   | UserController@destroy |         

这个table表明/{username}路由会转到UserController@index方法。此外,如果您注意到,生成的 show 路由实际上是:

{username}/{{username}}

因此我不建议使用资源路由生成器,如果您以显式方式定义路由则最好。例如:

Route::get('{username}', ['as' => 'username.show', 'uses' => 'UserController@show']);

此外,Laravel 会按照出现的顺序读取路线。定义此类动态路由时,请确保此路由是 route.php 文件中的最后一个路由。示例:

Route::get('about', 'StaticPagesController@about');
Route::get('blog', 'StaticPagesController@blog');
Route::get('contact', 'StaticPagesController@contact');
Route::get('{username}', ['as' => 'username.show', 'uses' => 'UserController@show']);