第一次使用DingoApi,Transformer类不起作用。
这是RoleTrasnformer
class
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 ]; } }
这是 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); } }
预期是返回 role_id
和 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" } ]
原因是:
配置了api前缀API_PREFIX 为api,但是我确是在没有api前缀的路由下测试的。浪费了很长时间,希望对看到本文的你有所帮助。