Как визуализировать изображение внешнего интерфейса с помощью Yii2 DetailView? - PullRequest
0 голосов
/ 29 мая 2018

Я хочу отобразить / показать изображение в виде на бэкэнде , но местоположение изображения в frontend/web/uploads.

Я попытался сделать это на DetailView::widget():

...
[
    'attribute'=>'image',
    'value'=>('/frontend/web/uploads/'.$model->image),
    'format' => ['image',['width'=>'100','height'=>'100']],
],

Но изображение не появляется.Любая помощь?

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Да, можно получить доступ от frontend/web/uploads к backend представлению.

Сначала добавьте urlManagerFrontend в backend->config->main.php как

'components' => [
    'urlManagerFrontend' => [
        'class' => 'yii\web\urlManager',
        'baseUrl' => 'frontend/web/', //Access frontend web url
    ],
],

И затем получите доступ к frontend/web/backend как

Yii::$app->urlManagerFrontend->baseUrl.'/uploads/your_image.jpg'

В DetailView :: виджет как

[
   'attribute'=>'image',
   'value'=> function ($model) {
        return Html::img(Yii::$app->urlManagerFrontend->baseUrl.'/uploads/'.$model->image, ['alt' => 'No Image', 'width' => '10px', 'height' => '10px']);
   },
   'format' => 'raw',
],
0 голосов
/ 29 мая 2018

Если это единственное место, где вы ссылаетесь на интерфейс из бэкэнда, самый простой способ - определить псевдоним в вашей конфигурации бэкэнда:

Yii::setAlias('@frontendUploads', 'https://repasca.devs/uploads');

И использовать этот псевдоним для создания URL файла:

[
    'attribute' => 'image',
    'value' => Yii::getAlias('@frontendUploads') . '/' . $model->image,
    'format' => ['image', ['width' => '100', 'height' => '100']],
],
0 голосов
/ 29 мая 2018
use yii\helpers\Html;  

 [
      'label' => 'Image',
      'format' => 'raw',
      'value' => Html::img('@web/uploaded_images/' . $model->image, ['width' => '10px', 'height' => '10px']),
 ],
...