我正在构建API系统的前端部分。 使用Laravel的默认Resource Controller,您可以实现此类请求:
哪个会叫: /app/controllers/SoccerController.php @ show($ id)方法
我需要至少一个更深层次的深度,才能做到这一点:
所以它将解决:
/app/controllers/SoccerController.php @ show()方法同时包含“播放器”和“10”参数。
public function show($model)
{
return Response::json(array('success' => true, 'message' => 'Test ' . $model));
}
Laravel只将1个参数传递给方法,我找不到任何关于如何传递更多信息的内容。
我这样做基本上是因为我的1个控制器负责与几个模型交谈,而不仅仅是一个。无论是SoccerPlayer还是SoccerTeam或SoccerSchedule,都应该很好地放下
/v1/<controller>/<type>/<id>
通知书?
谢谢!
答案 0 :(得分:1)
无论如何,您可以通过在资源路径之前放置自定义路线来充分利用这两个世界:
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)
{
}
答案 1 :(得分:0)
您可以使用route prefixing
Route::group(array('prefix' => 'soccer'), function()
{
Route::resource('player', 'PlayerController');
});
然后,您可以将所有足球相关控制器放在同一名称空间(和同一文件夹)中,如Soccer
。在这种情况下,请将上述路线更改为
Route::resource('player', 'Soccer\PlayerController');