2016-07-20 20 views
1

Dies ist meine erste Dingo API-Implementierung. Das ist meinDingo Api Transformer funktioniert nicht richtig. Rückgabe Array anstelle des Transformators

RoleTrasnformer Klasse

namespace App\Api\V1\Transformers; 

use League\Fractal\TransformerAbstract; 
use App\Role; 

class RoleTransformer extends TransformerAbstract 
{ 

    public function transform(Role $role) 
    { 

     return [ 
      'role_id' => (int)$role->id, 
      'name' => $role->name 
     ]; 
    } 

} 

Dies ist RoleController

namespace App\Http\Controllers; 

use Dingo\Api\Routing\Helpers; 
use Illuminate\Http\Request; 
use Dingo\Api\Http\Response; 
use App\Role; 
use App\Http\Requests; 
use App\Api\V1\Transformers\RoleTransformer; 

class RoleController extends Controller 
{ 
    use Helpers; 

    public function index(){ 
     $roles = Role::all(); 

     return $this->response->collection($roles, new RoleTransformer()) 
           ->setStatusCode(200); 
    } 
} 

Obwohl ich sollte nur role_id und name

[ 

    { 
     "id": 1, 
     "name": "admin", 
     "display_name": "Admin", 
     "description": "Administrator", 
     "created_at": "2016-07-18 08:11:44", 
     "updated_at": "2016-07-18 08:11:44" 
    }, 
    { 
     "id": 2, 
     "name": "director", 
     "display_name": "Director", 
     "description": "Country Manager", 
     "created_at": "2016-07-18 08:11:44", 
     "updated_at": "2016-07-18 08:11:44" 
    }, 
    { 
     "id": 3, 
     "name": "manager", 
     "display_name": "Manager", 
     "description": "Team Manager", 
     "created_at": "2016-07-18 08:11:44", 
     "updated_at": "2016-07-18 08:11:44" 
    } 

] 
erhalten

Nicht sicher, was ich falsch mache. Bitte helfen Sie mir, den Fehler zu identifizieren.

Mit Laravel 5.2 und Dingo [email protected]

TIA
Ariful

+0

Die Lösung gefunden. In 'config/api.php' wurde das URL-Präfix als '' prefix '=> env (' API_PREFIX ',' api ') gesetzt;' aber auf meinen Routen habe ich ohne 'api'-Präfix getestet. Sobald ich 'api' in der Route eingestellt habe, wirkt es wie ein Zauber. –

Antwort

0

Ist das nicht Teil sein sollte:

public function index(){ 
    $roles = Role::all(); 
    $rt = new RoleTransformer(); 

    return $this->response->collection($roles, $rt->transform($roles)) 
          ->setStatusCode(200); 
} 

Oder Sie können einen Konstruktor Ausgang machen nur die ID und der Name ?? Lass es mich wissen, wenn es hilft!

+0

Entschuldigung, aber diese Lösung funktioniert nicht. 'transform()' return array und der zweite Parameter von 'collection()' müssen eine Transformer-Klasse sein. Der von mir eingereichte Code ist eine vollständige Kopie von der Dingo-Dokumentation. –