@yii2-prog11

Что нужно прописать чтоб был правильный URL для frontend и backend в yii2?

Есть сайт на опенсервере и к нему прописаны следующие домены:
Имя домена: localhost. Папка домена: \localhost\frontend\web
Имя домена: admin.localhost. Папка домена: \localhost\backend\web

Картинки сохраняются и выводятся в админке в папку backend/web/upload/images

Вот пример как я вывожу картинку в админке:
$dir = '/upload/images/preview-' . $model->img;
return Html::img(Yii::$app->urlManager->createUrl($dir));


Вопрос в следующем. Как нужно правильно указать URL к картинке чтоб она выводилась в пользовательской части?
Или как нужно прописать пути если я создам общую папку , например, в common?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Можно сделать так:
В common/config/main.php
$baseUrlFrontend = str_replace('backend/web', '', (new Request)->getBaseUrl());

return [
    'components' => [
        'cache'              => [
            'class' => 'yii\caching\FileCache',
        ],
        'urlManagerFrontend' => [
            'class'           => 'yii\web\UrlManager',
            'baseUrl'         => $baseUrlFrontend,
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
        ]
    ]
]

Изображения хранятся в frontend/web/images. В backend получаете их так:
$img =  (Yii::$app->urlManagerFrontend->createUrl( $model->images[0]['path'] . DIRECTORY_SEPARATOR . $model->images[0]['title']));
echo Html::img($img);

В frontend получаете обычным способом.
echo Html::img('@web/' . $model->images[0]['path'] . DIRECTORY_SEPARATOR . $model->images[0]['title']);


p.s. У меня на одну запись может быть несколько изображений, поэтому использую связь "images" и вывожу первое изображение из массива с индексом "0".

p.s.s. urlManagerFrontend расположил в common потому, что не только в backend использую его. Вы попробуйте расположить в backend/config/main.php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы