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 をシリアライザーとして実装しましたが、動作します。

ディンゴフラクタルのセットアップで何が欠けていますか?

更新*構成 にセットアップを含めました

$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()、応答には「データ」キーがあります。

ありがとう。

4

1 に答える 1