Задать вопрос
@rumano

Как настроить urlManager в Yii2 чтобы показывать изображение c шаблоном «/images/address_city_state_zip_PROPERTY-ID_IMAGE-ID.jpg»?

Доброго времени суток.
Проблема, в общем, вот в чем:

Изображение загружается по ID из контроллера image.
myserver/image/miniature-image/?property_id=44369&...

Хочу сделать так, чтобы в названии файла изображения были адрес и на конце ID, например вот так:
myserver/images/address_city_state_zip_PROPERTY-ID_IMAGE-ID.jpg,
где:
  • address_city_state_zip - адрес, город, область и почтовый индекс, подставляемый из БД
  • PROPERTY-ID - ID из базы данных
  • IMAGE-ID - номер картинки


Правило работает для myserver/image/miniature-image/?property_id=44369 при выключенном urlManager и добавлением в .htaccess правила для Mod_Rewrite:
RewriteRule ^images/([a-zA-Z0-9_-]+)_([0-9]+)\.jpg$ /index.php?r=image/miniature-image&pid=$2
или
RewriteRule ^images/([a-zA-Z0-9_-]+)_([0-9]+)\.jpg$ /image/miniature-image&pid=$2

Но это не работает при подключении urlManager.

Подскажите, пожалуйста как это можно реализовать в Yii2?
  • Вопрос задан
  • 30 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@rumano Автор вопроса
Решил задачу так:
в конфигурации добавил следующее правило:
'urlManager' => [
  'enablePrettyUrl' => true,
  'showScriptName' => false,
  'rules' =>  [
   'image/<id:[0-9a-zA-Z_-]+_\d{1,}_\d{1,3}_\d{1,3}.jpg>' => 'image/miniature-image'
  ],
],


Создал контроллер с методом actionMiniatureImage
public function actionMiniatureImage()
{
  ... делаем парсинг $_GET
  ... извлекаем данные из БД
  ... генерируем изображение
}


Вызываем из браузера:
http://myserver/image/10-address-city-state-zip_45162_2_0.jpg


используем в HTML:
<img src="http://myserver/image/10-address-city-state-zip_45162_2_0.jpg" alt="10 Address, City, State Zip">


В файле .htaccess ничего НЕ меняем.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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