2017-06-02 12 views
1

Laravel 5.4 RESTful APIによって送信されるJSON出力を変更するには、thephpleagueによってFractalパッケージを使用します。ページネーションは今後追加されるため、コレクションではデフォルトのDataArraySerializerを使用し、単一のアイテムではArraySerializerを使用することが重要です。より深いネストされたオブジェクトに同じ構造が与えられることも必要です。どのようにこれを達成することができますか(グローバルかどうか)?ネストされたアイテムとコレクション用に異なるシリアライザを持つフラクタルトランス

class TreeTransformer extends TransformerAbstract { 
    protected $defaultIncludes = [ 
     'type', 
     'branches' 
    ]; 

    public function transform(Tree $tree) { 
     return [ 
      'id' => (int)$tree->id, 
      'name' => (string)$tree->name 
     ]; 
    } 

    public function includeType(Tree $tree) { 
     return $this->item($tree->type, new TypeTransformer()); // Should be ArraySerializer 
    } 

    public function includeBranches(Tree $tree) { 
     return $this->collection($tree->branches, new BranchTransformer()); // Should stay DataArraySerializer 
    } 
} 
+0

ラッパー/パッケージのlaravel-fractalを使用していますか、それともフラクタル自体を使用していますか? – louisfischer

+0

私はlaravel-fractalパッケージ(vendor/spatie/laravel-fractal)をインストールしましたので、私はそれを使用していると仮定しましたが、崇高さは自動的にFractalパッケージを含んでいたようです。例えば、League \ Fractal \ TransformerAbstract。 – Sam

+0

laravel-fractalはPHPリーグのFractalパッケージのラッパーですから、それはまったく正常です。クラスの一部を拡張します。 – louisfischer

答えて

関連する問題