2016-04-26 6 views
0

Für ein API Ich schreibe in meiner Route-Datei Ich habe:Lumen inkonsistentes Verhalten mit GET-Anfrage

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

In meiner Controller-I die entsprechenden zwei Funktionen haben:

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) ... 

Die Anrufe sind beide auf genau die gleiche Art und Weise, beispielsweise aus:

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

Bitte versuchen Sie nicht, dass, wenn die URL nur auf einem lokalen dienen r im Moment.

Meine erste Funktion läuft perfekt. Die zweite gibt eine Fehlerausnahmebedingung zurück

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

Aber sie sind identisch und in der gleichen Steuerung. Hilfe?

Antwort

0

Das Problem hier ist, dass Sie den Parameternamen als deklariert haben. Daher müssen Sie die Argumentvariable auf diesen Namen festlegen:

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

Danke - absolut richtig. Seltsamerweise hatte ich denselben Code in Laravel benutzt, wo er perfekt funktioniert hatte. Nur auf Lumen ist es gescheitert. Wie auch immer, deine Korrektur hat es komplett sortiert, danke. –

+0

Ich sollte denken, dass Laravel das gleiche Verhalten verwendet. Die beiden Frameworks verwenden jedoch unterschiedliche Routing-Pakete. Ich denke, Laravels basiert auf Symfonys Komponenten, während Lumen FastRoute verwendet. Ehrlich gesagt habe ich jedoch nie wirklich verschiedene Variablennamen in Laravel ausprobiert - nicht seit v3. –

Verwandte Themen