Разбор включает в себя для вложенных трансформеров - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь выяснить, как я могу проанализировать включения для вложенных преобразователей, учитывая сценарий, приведенный ниже:

У меня есть контроллер, который устанавливает мой ArraySerializer, включает синтаксический анализ для OrderTransformer, а затем создает данные:

$data = (new Manager())
    ->setSerializer(new ArraySerializer())
    ->parseIncludes('dispatches')
    ->createData(new Collection($orders, new OrderTransformer()));

Внутри моего преобразователя заказов у ​​меня есть включаемые рассылки, которые я анализирую из приведенного выше:

class OrderTransformer
{
    protected $availableIncludes = [
        'dispatches',
    ];

    public function transform($order)
    {
        return [];
    }

    public function includeDispatches($order)
    {
        return $this->collection($order->getDispatches(), new DispatchesTransformer());
    }
}

Однако, где я застреваю, находится внутри моего DispatchesTransformer:

class DispatchesTransformer
{
    protected $avaiableIncludes = [
        'product',
    ];

    public function transform($order)
    {
        return [];
    }

    public function includeProduct()
    {
        // ...
    }
}

У меня есть доступный продукт, который я хотел бы использовать. Я не хочу делать это включением по умолчанию. Как я могу использовать это включение?

Я пробовал что-то подобное с моего контроллера:

->parseIncludes(['dispatches', 'product'])

1 Ответ

0 голосов
/ 30 января 2020

Это может быть достигнуто с помощью точечной нотации, например, так:

dispatches.product

Это на самом деле в документации по включению данных, что я упустил из виду: https://fractal.thephpleague.com/transformers/

...