У нас обычно есть какой-то конкретный каталог для сохранения изображений (например, / public_html / images), и там мы храним оригиналы (обычно размер которых увеличивается до некоторого максимального размера - скажем, 1024 пикселя - после загрузки).Там также есть подкаталоги, которые называются средними и маленькими (для подробной информации о продукте и маленькой миниатюры для списка категорий).
Мы также храним изображения, используя первичный ключ продуктов (если products: images равен 1: 1) или используя PK + id (для 1: N).Затем мы легко собираем URL в помощнике вида img () следующим образом.
public function img($product, $imageId, $size = self::SMALL) {
return sprintf('/images/%s/%s_%s.jpg', $size, $product->id, $imageId);
}
//in view - can also be wrapped in view helper - depends on your scenario
<a href="<?php echo $this->img($product, 1, 'big');?>"><img src="<?php echo $this->img($product, 1, 'small');?>" /></a>
Редактировать: Кстати: на самом деле мы никогда не используем оригиналы.Мы делаем изображения больших размеров.
Как правило, полезен помощник для изменения размера изображения.Но зависит от того, как вы загружаете свои изображения - если есть только одно действие и один контроллер - в этом нет необходимости AFAIK.Но вы можете загружать изображения также из импорта, используя FTP-загрузку и т. Д.
Связывание (если описанный выше процесс не работает для вас) изображений через БД делится на две категории - контентно-ориентированныеи изображение ориентировано.
Вы можете либо перейти к редактированию продукта, где есть кнопка, либо как «загрузить новое изображение» или «связать загруженное изображение».Другой вариант - иметь список изображений с надписью «подключиться к продукту».Очень зависит от рабочего процесса ваших пользователей.
Также есть несколько вариантов как построить свою БД.Вы можете иметь image_id в вашей таблице продуктов.Или вы можете иметь imalelink_id в своей таблице продуктов, которая ссылается на таблицу M: N, которая связывает изображения с продуктами.Также вы можете иметь product_id в вашей таблице изображений :) Все эти подходы действительны в некоторых случаях и неправильны в других.Все зависит от того, как конечные пользователи будут его использовать.