Php Laravel 4 RESTful API-资源控制器-更深层的请求层次结构

Php Laravel 4 RESTful API-资源控制器-更深层的请求层次结构,php,rest,laravel,laravel-4,Php,Rest,Laravel,Laravel 4,我正在构建API系统的前端部分。 使用Laravel的默认值,您可以实现这种类型的请求: 这将称为: /app/controllers/SoccerController.php@show($id)方法 我至少还需要一个层次的深度,才能这样做: 因此,它将决心: /app/controllers/SoccerController.php@show()方法同时具有“player”和“10”参数 public function show($model) { return Response:

我正在构建API系统的前端部分。 使用Laravel的默认值,您可以实现这种类型的请求:

这将称为: /app/controllers/SoccerController.php@show($id)方法

我至少还需要一个层次的深度,才能这样做:

因此,它将决心:

/app/controllers/SoccerController.php@show()方法同时具有“player”和“10”参数

public function show($model)
{
    return Response::json(array('success' => true, 'message' => 'Test ' . $model));
}
Laravel只将一个参数传递给方法,我找不到关于如何传递更多参数的任何信息

我这样做基本上是因为我的1号控制器负责与几个模型进行对话,而不仅仅是一个。无论是足球运动员、足球队还是足球赛程表,都应该妥善安排
/v1//

建议


谢谢

通过在资源路由之前放置一条自定义路由,您可以两全其美:

Route::get('soccer', 'SoccerController@show');
Route::resource('soccer', 'SoccerController', array('except' => array('show')));
现在
show()
方法将从资源控制器控件中排除(因此调用
soccer/10
soccer/player
将导致
NotFoundHttpException
),并放置到自定义路由中。 您需要编辑
show()
方法来接受第二个参数,不过:

public function show($type, $id)
{

}
你可以用

然后,您可以将所有与足球相关的控制器放在同一命名空间(和同一文件夹)中,如
soccer
。在这种情况下,将上述路线更改为

Route::resource('player', 'Soccer\PlayerController');

如果您希望对路由进行更多控制,我建议您明确定义路由,而不是使用
资源控制器
Route::resource('player', 'Soccer\PlayerController');