1

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

我尝试使用 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”键。

谢谢。

4

1 回答 1

0

我错过了 CustomSerializer,这是一个由 ArraySerializer 扩展的类。感谢此链接在此处输入链接描述

于 2016-06-20T12:20:56.467 回答