删除dingo中的关键数据 - 分形

时间:2016-06-20 10:56:39

标签: transformer dingo-api

我已经研究了几个关于如何在响应中删除关键“数据”的示例,但我无法修复它。

我尝试使用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(),响应具有“数据”键。

感谢。

1 个答案:

答案 0 :(得分:0)

我错过了CustomSerializer,这是一个由ArraySerializer扩展的类。感谢此链接enter link description here