【问题标题】:Remove key data in dingo - fractal删除 dingo 中的关键数据 - 分形
【发布时间】:2016-10-21 14:29:37
【问题描述】:

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

我尝试使用dingo提供的回调

return $this->collection($users, new UserTransformer, function ($resource, $fractal) {
    $fractal->setSerializer(new ArraySerializer);
});

改变“$fractal->setSerializer(new CustomSerializer);”到“$fractal->setSerializer(new ArraySerializer);”因为我没有基于分形文档array serializer 的CustomSerializer(以及如何制作这个自定义序列化器?),但输出具有关键“数据”。

我还在不同的项目中测试了分形库,并将 ArraySerializer 实现为 Serializer,它可以工作。

我在 dingo-fractal 的设置中缺少什么?

更新* 我在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(),响应有“data”键。

谢谢。

【问题讨论】:

  • 我也试过这个> $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); } );

标签: transformer dingo-api


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2016-01-31
    • 1970-01-01
    • 2018-08-11
    • 2017-12-06
    • 2011-10-23
    • 2018-09-16
    相关资源
    最近更新 更多