2016-04-26 185 views
0

对于API我写,我的路线流明不一致的行为的文件,我有:用GET请求

$app->get('item/{id}', '[email protected]'); 
$app->get('groupitems/{group}', '[email protected]'); 

在我的控制器我有相关的两个功能:

public function item($id, Request $request) 
{ 
    if ($this->isAuthorised($request->input('tenant_id'), $request->input('api_code'))) { 
     $item = Line::find($id); 
     if ($item) { ... 

public function groupItems($id, Request $request) 
{ 
    if ($this->isAuthorised($request->input('tenant_id'), $request->input('api_code'))) { 
     $items = Line::where('tenant_id', $request->input('tenant_id'))->where('publish', true) ... 

电话是例如:

http://api.artlook.com/groupitems/29?tenant_id=2&api_code=o9rty43 

请不要尝试,因为URL只在本地服务器上此刻。

我的第一个函数运行完美。第二个返回错误异常

Argument 2 passed to groupItems() must be an instance of Illuminate\Http\Request, string given 

但它们是相同的,并在同一个控制器中。帮帮我?

回答

0

这里的问题是,您已声明参数名称为{group}。因此,您需要将参数变量设置为该名称:

public function groupItems($group, Request $request) 
... 
+0

谢谢 - 绝对正确。奇怪的是,尽管我在Laravel中一直使用相同的代码,但它完美地工作。只有流明才会失败。无论如何,您的更正已完全排序,谢谢。 –

+0

我应该认为Laravel使用相同的行为。但是,这两个框架确实使用不同的路由包。我认为Laravel的是基于Symfony的组件,而Lumen使用FastRoute。但事实上,我从来没有真正尝试过Laravel中的不同变量名称 - 不是自v3以来。 –