dkrylov
@dkrylov

Правильно ли я понимаю суть загрузки изображений к товарам?

Здравствуйте, yiiсты)

Изучаю yii2, столкнулся с задачей загрузки фото для товаров.

Есть 2 таблицы(утрировано):
`product` - id | name (ID и имя товара)
`product_photo` - id | product_id | image (ID записи, ID товара, ссылка на изображение)

Вопрос стоит в том, как прикреплять загруженные фото к товару? Представляю пока что так:
В модели товара Product.php добавить свойство $images. При выводе модели товара (редактировании в админке) - выводить дополнительный инпут для множественной загрузки:
<?= $form->field($model, 'images[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>


При отправке, в модели товара, с помощью use подключать модель ProductPhoto. И при обработке этих файлов, добавлять запись в БД с помощью этой модели.

Правильно я мыслю? Или есть более элегантное решение?
  • Вопрос задан
  • 347 просмотров
Решения вопроса 2
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
В принципе правильно.
Сначала сделайте так, как Вы описали.
Заработает - ищите более элегантное решение.
А можно и разделить.
Сначала создаёте запись в базе товара, потом, после того, как Вас перекинет на страницу просмотра созданного товара, прикрепляете изображения. Просто на странице просмотра товара добавляете форму для загрузки изображений.
Вариантов может быть много, выбирайте тот, какой Вам больше понравится.
Ответ написан
sayber
@sayber
Да, я программирую на PHP и еще асинхронно!
На тему API

dkrylov:
У вас будут методы POST (создание товара), GET (получение), PUT (обновление данных товара).
И вот при PUT вы не сможете послать файл, т.к. в канонах и http, файлы идут только через POST.
Для работы по API, делается отдельный метод для загрузки изображения.

Допустим путь по работе с товаром: /api/v1/goods (ну и соответствующие post, get..)
Для загрузки изображения, вам потребуется что то типа PUT: /api/v1/goods/upload...

Что бы это работало, сначала создается позиция товара в сущности goods, затем загружается изображение и записываем в goods_photo.
ID из goods_photo пишем в соответствующие поле сущности goods (goods_photo_id)

Можно конечно костыли понаделать и писать все через POST.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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