Используется
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?