我有我的/后端/网络/上传图片。 现在我想向他们展示在/前端/视图/网站/指数
因此,在索引视图,我试图告诉他们这样的:
$planet = Planet::find()->all();
foreach($planet AS $pl=> $p){
echo Html::img('/backend/web/'.($p->path));
}
在$ P->路径 - 上传/ 123.jpg
但这种路径是无效的,我怎么能在/前端/视图/网站/指数/后端/网络/上传显示图像?
我有我的/后端/网络/上传图片。 现在我想向他们展示在/前端/视图/网站/指数
因此,在索引视图,我试图告诉他们这样的:
$planet = Planet::find()->all();
foreach($planet AS $pl=> $p){
echo Html::img('/backend/web/'.($p->path));
}
在$ P->路径 - 上传/ 123.jpg
但这种路径是无效的,我怎么能在/前端/视图/网站/指数/后端/网络/上传显示图像?
它已经回答了这里 。
有以实现两个主要选择。
1)可以从创建别名frontend/web/images
到backend/web/images
到从前端显示后端图像。
运行ln -s ../../frontend/web/images images
从backend/web
文件夹。 这是更好地删除目标文件夹( backend/web/images
在这之前)。
2)可替代的方式来发布从这样的目录将创建该文件夹资产束图像,这样的图像将在被复制frontend/web/assets
例如。 你可以阅读更多有关资产包的官方文档 。
转到您的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');
我做了一个目录,后端图像和前端的图像产生:
在我的普通/配置/ 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”。