Задать вопрос
@terehinis

Как вызвать (Fractal) transformer из другого transformer?

Используется fractal.thephpleague.com из пакета github.com/dingo/api
Есть трансформер для новостей:
class NewsTransformer extends TransformerAbstract
{

    public function transform($response)
    {
        $return = [
            'id' => $response->id,
            'name' => $response->name,
            'short' => $response->short,
            'full' => $response->full,
            'url' => $response->url,
            'date_public' => $response->date_public
        ];

        if($response->photo)
            $return['photo'] = [
                'id' => $response->photo->id,
                'patch' => (new Images())->getResizeImage($response->photo->id),
                'size' => $response->photo->size,
            ];

        foreach ($response->tag as $value)
            $return['tags'][] = [
                'id' => $value->id,
                'name' => $value->tag,
            ];

        return $return;
    }
}


Вызов из контроллера:
$news = news::with('tag','photo')->paginate(20);
        return $this->response->paginator($news, new NewsTransformer());


В трансформере подгружается изображение. Изображения хранятся в общей таблице (используются в нескольких модулях системы). Чтобы управлять централизованно видом объекта изображений требуется в трансормере NewsTransformer подключить PhotoTransformer.

Такой код не срабатывает:
if($response->photo)
            $return['photo'] = new \League\Fractal\Resource\Item($response->photo,new PhotoTransformer());


Собственно вопрос, как вызвать PhotoTransformer?
  • Вопрос задан
  • 275 просмотров
Подписаться Оценить Комментировать
Решения вопроса 1
@terehinis Автор вопроса
Нашел решение. Повнимательней изучив документацию fractal.thephpleague.com/transformers/ Раздел Including Data/Default Includes
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы