【问题标题】:Laravel dingo/api custom transformerLaravel dingo/api 自定义转换器
【发布时间】:2015-01-28 07:30:47
【问题描述】:

我正在尝试使用 dingo api (https://github.com/dingo/api/wiki/Transformers#custom-transformation-layer) 为我的 Post 模型实现一个自定义转换器,但我遇到了这个异常:

缺少 PostTransformer::transform() 的参数 2,在第 298 行的 /home/.../vendor/league/fractal/src/Scope.php 中调用并定义

我的控制器:

$post = Post::findOrFail(2);

return $this->item($post, new PostTransformer);

我的 PostTransformer 类:

<?php

use Illuminate\Http\Request;
use Dingo\Api\Transformer\Binding;
use Dingo\Api\Transformer\TransformerInterface;

class PostTransformer implements TransformerInterface
{
    public function transform($response, $transformer, Binding $binding, Request $request)
    {
        // Make a call to your transformation layer to transformer the given response.

        return [
            'kkk' => 'val'
        ];

    }
}

怎么了?

【问题讨论】:

    标签: php api rest laravel restful-architecture


    【解决方案1】:

    您的 PostTransformer 不是 Transformer。您在那里指定的是一个 TransformerLayer (https://github.com/dingo/api/wiki/Transformers#custom-transformation-layer)。

    然而,Dingo 中的 Transformer 看起来像这样:

    <?php
    
    use League\Fractal\TransformerAbstract;
    
    class PostTransformer extends TransformerAbstract
    {
        public function transform(Post $post) {
            return [
                'id' => $post->id
                // ...
            ];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-03
      • 2017-12-07
      • 2016-04-29
      • 2016-07-22
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 2016-03-23
      相关资源
      最近更新 更多