応答でキー「データ」を削除する方法については、すでにいくつかの例を調べましたが、修正できません。
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()、応答には「データ」キーがあります。
ありがとう。