我已经研究了几个关于如何删除关键“数据”作为响应的示例,但我无法修复它。
我尝试使用 dingo 提供的回调
return $this->collection($users, new UserTransformer, function ($resource, $fractal) {
$fractal->setSerializer(new ArraySerializer);
});
改变“$fractal->setSerializer(new CustomSerializer);” 到“$fractal->setSerializer(new ArraySerializer);” 因为我没有基于分形文档数组序列化器的 CustomSerializer(以及如何制作这个自定义序列化器?),但输出具有关键“数据”。
我还在不同的项目中测试了分形库并将 ArraySerializer 实现为 Serializer,并且它可以工作。
我在 dingo-fractal 的设置中缺少什么?
更新*我在配置 中包含了设置
$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(),响应有“data”键。
谢谢。