Я пытаюсь реализовать пользовательский преобразователь с помощью динго API (https://github.com/dingo/api/wiki/Transformers#custom-transformation-layer) для моей модели Post, и я получаю это исключение:
Отсутствует аргумент 2 для PostTransformer :: transform (), вызывается в /home/…/vendor/league/fractal/src/Scope.php в строке 298 и определяется
Мой контроллер:
$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'
];
}
}
Что случилось?
Ваш ПостТрансформер не Трансформер. То, что вы указали, есть TransformerLayer (https://github.com/dingo/api/wiki/Transformers#custom-transformation-layer).
Однако Трансформер в Динго выглядит так:
<?php
use League\Fractal\TransformerAbstract;
class PostTransformer extends TransformerAbstract
{
public function transform(Post $post) {
return [
'id' => $post->id
// ...
];
}
}
Других решений пока нет …