Laravel dingo/api定制变压器

Ada*_*ver 1 php api rest restful-architecture laravel

我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)

我的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'
        ];

    }
}
Run Code Online (Sandbox Code Playgroud)

怎么了?

小智 5

您的PostTransformer不是变形金刚.您指定的是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
            // ...
        ];
    }
}
Run Code Online (Sandbox Code Playgroud)