Yii2先进,如何从后端在前端显示图像(Yii2-advanced, how to display

2019-11-03 21:40发布

我有我的/后端/网络/上传图片。 现在我想向他们展示在/前端/视图/网站/指数

因此,在索引视图,我试图告诉他们这样的:

 $planet = Planet::find()->all();
foreach($planet AS $pl=> $p){
    echo Html::img('/backend/web/'.($p->path));
}   

在$ P->路径 - 上传/ 123.jpg

但这种路径是无效的,我怎么能在/前端/视图/网站/指数/后端/网络/上传显示图像?

Answer 1:

它已经回答了这里 。

有以实现两个主要选择。

1)可以从创建别名frontend/web/imagesbackend/web/images到从前端显示后端图像。

运行ln -s ../../frontend/web/images imagesbackend/web文件夹。 这是更好地删除目标文件夹( backend/web/images在这之前)。

2)可替代的方式来发布从这样的目录将创建该文件夹资产束图像,这样的图像将在被复制frontend/web/assets例如。 你可以阅读更多有关资产包的官方文档 。



Answer 2:

转到您的frontend/config和添加:

'components' => [
    // You can name it whatever you want as it is custom
    'urlManagerBackend' => [
        'class' => 'yii\web\urlManager',
        'baseUrl' => 'yourbackendend/absolutepath/uploads/',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ],
],

然后你可以使用它像这样:

Html::img(Yii::$app->urlManagerBackend->baseUrl.'/uploads/your_img.png');


Answer 3:

我做了一个目录,后端图像和前端的图像产生:

在我的普通/配置/ bootstrap.php中:

Yii::setAlias('@root', dirname(dirname(__DIR__)));

在我的普通/配置/ main.php:

'modules' => [
      'yii2images' => [
         'class' => 'rico\yii2images\Module',
         //be sure, that permissions ok
         //if you cant avoid permission errors you have to create "images" folder in web root manually and set 777 permissions
         'imagesStorePath' => '@root/upload/store', //path to origin images
         'imagesCachePath' => '@root/upload/cache', //path to resized copies
         'graphicsLibrary' => 'GD', //but really its better to use 'Imagick'
         'placeHolderPath' => '@root/upload/store/no-image.png', // if you want to get placeholder when image not exists, string will be processed by Yii::getAlias
         'imageCompressionQuality' => 85, // Optional. Default value is 85.
      ],
]

并创建了“imagesStorePath”,并在项目根目录的“imagesCachePath”。



文章来源: Yii2-advanced, how to display images from backend in frontend