Код: Выделить всё
$image = Yii::getAlias('modules/news/uploads/') . 'image.jpg';
echo Html::img(Yii::$app->request->baseUrl . $image);
в firebug src картинки выглядит вот так - /modules/news/uploads/image.jpg
Код: Выделить всё
$image = Yii::getAlias('modules/news/uploads/') . 'image.jpg';
echo Html::img(Yii::$app->request->baseUrl . $image);
ух ты, а если в будущем у меня будет больше тысячи изображений, которые каждый день будут редактироваться. Так все они будут перезаписываться в папку assets? Как то не комильфо, сейчас база изображений занимает больше 1гб...vova07 писал(а):Вы должны использовать "assets".
так работает, но ведь нарушается логическая структура папок( хотелось бы, чтобы все что относилось к модулю, находилось в его папке.mihail_dev писал(а):вам нужно сделать отдельную папку типа path_to_webroot/files
далее
/*$imageFullPath = Yii::getAlias('@webroot/files') . '/image.jpg'; - навсяк может пригодится*/
$imageUrl = Yii::getAlias('@web/files') . '/image.jpg';
echo Html::img($imageUrl);
Ваш сарказм неуместен. Вы задали конкретный вопрос, я написал конкретный ответ. "Asset" в случае с модулями единственное решение, а для того чтобы нагрузку уменьшить есть "symlink"-и. Если такой вариант не подходит, вам уже описали один менее затратный.de1phi писал(а):ух ты, а если в будущем у меня будет больше тысячи изображений, которые каждый день будут редактироваться. Так все они будут перезаписываться в папку assets? Как то не комильфо, сейчас база изображений занимает больше 1гб...
кеш браузера, потому что изображения изменяются практически постоянно и чтобы при обновлении страницы браузер запрашивал последнюю версию изображения, а не загружал из кеша.mihail_dev писал(а):Вообще AssetManager предназначен для работы с вёрсткой публикация стилей скриптов и тому подобной всякой всячины.
Для других целей этот инструмент мало подходит!
по поводу
echo Html::img($imageUrl . '?_=' . rand()); - прокатит?
непонятно какой кэш вы хотите обновлять!
но в данном случае будет только повторно делаться запрос на сервер!
и то правильнее сделать что то на подобие echo Html::img($imageUrl . '?_=' . time());
а я другого мнения, у меня 5 модулей и в каждом есть свои файлы доступные для пользователя. И хранить их отдельно от модуля? Тогда нарушается скелет папки модуля. Модуль должен быть самодостаточен, а тут получается зависимость от общей папки для файлов. Как вариант, от vova07, это использовать symlink, но опять же велосипед. В yii 1 подобной проблемы не было.zelenin писал(а):никакая папка модуля не должна смотреть в веб.
то есть у вас по одному урлу будут разные картинки?de1phi писал(а):кеш браузера, потому что изображения изменяются практически постоянно и чтобы при обновлении страницы браузер запрашивал последнюю версию изображения, а не загружал из кеша.mihail_dev писал(а):Вообще AssetManager предназначен для работы с вёрсткой публикация стилей скриптов и тому подобной всякой всячины.
Для других целей этот инструмент мало подходит!
по поводу
echo Html::img($imageUrl . '?_=' . rand()); - прокатит?
непонятно какой кэш вы хотите обновлять!
но в данном случае будет только повторно делаться запрос на сервер!
и то правильнее сделать что то на подобие echo Html::img($imageUrl . '?_=' . time());
Вы абсолютно не правы.de1phi писал(а):а я другого мнения, у меня 5 модулей и в каждом есть свои файлы доступные для пользователя. И хранить их отдельно от модуля? Тогда нарушается скелет папки модуля. Модуль должен быть самодостаточен, а тут получается зависимость от общей папки для файловzelenin писал(а):никакая папка модуля не должна смотреть в веб.
Код: Выделить всё
$image = Yii::getAlias('@app/modules/news/uploads/') . 'image.jpg';
echo Html::img($image);
Не будет работать. Эта папка не видна из веба.unknownby писал(а): ↑2019.12.27, 07:26 Никто не запрещает делать как вам хочется.
Так пробовал?Код: Выделить всё
$image = Yii::getAlias('@app/modules/news/uploads/') . 'image.jpg'; echo Html::img($image);
Ok, спасибо