我已经研究了几个关于如何在响应中删除关键“数据”的示例,但我无法修复它。
我尝试使用dingo提供的回调
return $this->collection($users, new UserTransformer, function ($resource, $fractal) {
$fractal->setSerializer(new ArraySerializer);
});
更改“$ fractal-> setSerializer(new CustomSerializer);” to“$ fractal-> setSerializer(new ArraySerializer);”因为我没有CustomSerializer(以及如何制作这个自定义序列化器?),基于分形文档array serializer,但输出有关键的“数据”。
我还测试了不同项目中的分形库,并将ArraySerializer实现为Serializer,它可以工作。
在dingo-fractal的设置中我缺少什么?
UPDATE * 我在config
中添加了设置$this->app->bind('Dingo\Api\Transformer\Adapter\Fractal', function($app) {
$fractal = $app->make('\League\Fractal\Manager');
$serializer = new \League\Fractal\Serializer\ArraySerializer();
$fractal->setSerializer($serializer);
return new \Dingo\Api\Transformer\Adapter\Fractal($fractal);
});
在我的控制器中
$obj = \App\EloquentModel\User::find(1);
return $this->response->item($obj, new UserTransformer);
在我的UserTransformer中
public function transform(User $trans)
{
return [
'id' => (int) $trans->id,
'name' => $trans->name,
'description' => $trans->description
];
}
应用这些内容删除了单个项目的关键“数据”。
{
"id": 1,
"name": "Juan",
"description": "The BOss"
}
但是当我试图把它变成一个数组时。 User :: all(),响应具有“数据”键。
感谢。