BostonGeorge
@BostonGeorge
Айтишник и юрист

Как передать дополнительные параметры в Laravel Resource?

Привет!
У меня есть задача возвращать в API массив данных для формы товара. Соответственно, есть сам товар и несколько коллекций объектов для select-инпутов.

Метод в контроллере товаров выглядит примерно так:
public function formSchemaTestResource(int $product): ProductFormSchemaResource
    {
        return (new ProductFormSchemaResource(Product::with([
            'size'
        ])->find($product)))
            ->additional([
                'sizes' => Size::all()
            ]);
    }


Метод в ресурсном контроллере товаров - так:
public function toArray(Request $request): array
    {
        return [
            'breadCrumbs' => [
                [
                    'name' => 'Товары',
                    'link' => '#',
                    'active' => 0
                ],
                [
                    'name' => is_null($this) ? 'Новый товар' : 'Редактируем товар «' . $this->name . '»',
                    'link' => '#',
                    'active' => 1
                ]
            ],
            'tabs' => [
                'tabTitle' => 'Системное',
                'tabContent' => [
                    [
                        'name' => 'id',
                        'type' => 'hidden',
                        'validations' => [],
                        'value' => $this?->id,
                    ],
                    [
                        'label' => 'Размер',
                        'name' => 'size_id',
                        'placeholder' => 'Выберите размер',
                        'type' => 'select',
                        'options' => ????, // Вот сюда я хочу как-то передать коллекцию sizes
                        'value' => $this?->size_id,
                    ],
                ]
           ]
      ];
}


Метод "additional" ресурсного контроллера просто добавляет массив "sizes" в ответ, но я не имею к нему доступа в методе toArray.

Собственно, вопрос: как в ресурсный контроллер передать дополнительную переменную?
Спасибо!
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Snatch87
Битриксоид по принуждению
Метод additional добавляет sizes не к ресурсу, а к ответу
Возможно при запросе самого товара, Вам стоит запрашивать данные о имеющихся размерах Вашего товара (если я правильно понял бизнес-логику) через with (как сейчас и происходит)
не совсем понятно, как у вас строится отношение товара к размеру: если у товара может быть только один размер, то обращайтесь к нему из ресурса через $this->size (или $this->resourse->size), если несколько, то возможно $this->sizes

в общем покажите модели товаров и размеров
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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