Функционал добавление изображения к товарам
Сайт недвижимости, на страницы добавления и редактирования объявлений прикручиваем возможность загрузки изображений через галерею kartik-v/yii2-widget-fileinput
Уже есть реализованный функционал добавления, отображения и всего необходимого для другого сайта
moskva.miltor.ru/add_objv... дам все модели, контроллеры и тд по изображениям с этого сайта, чтобы адаптировать и прикрутить это все к новому сайту (там надо будет разобраться в работе и адаптировать функционал под новую структуру, сделать все по правильному).
Данные об изображениях хранятся в таблице images (таблицу нужно создать через миграцию):
id первичный ключ, это и название изображений,
ad_id связь с объявление,
url varchar 500 (изображения могут быть с других сайтов, тогда тут просто ссылка на изображение)
main tinyint(1) 1 значит главное изображение (по одному объявлению есть всегда только одно главное изображение)
hash int уникальное число одинаковое для всех изображений одного объявления. Нужна для загрузки объявлений, при первом создании объявления (объявления в базе еще нет, а изображения загружать уже нужно). После того, как изображения связаны с товаром, то обнуляем эту значение
Папка для хранения изображений /images_ad/max(min)/Ndir/name.jpg, где:
Ndir номер папки от 0 до 999, которое расчитывается как последние 3 цифры id изображения (для id = 124323, папка 323, для 498085 папка 85, для 94000 папка 0) функция для получения номера папки из id есть уже, приведу ниже.
Name.jpg это наш id изображения к которому прибавили расширение '.jpg'; Таким образом нам не нужно хранить отдельно название изображения. Функцию создания подпаком могу дать, нужно их создать, загрузить в репозиторий, но указать в hgignore, чтобы все вновь создаваемые файлы игнорились и при разворачивании из репозитория проекта, папки были, а файлы нет.
Отображение блока для загрузки изображений как тут:
moskva.miltor.ru/add_objv...