今天在显示图片的问题上遇到了一个小问题,就是数据库存的图片的地址是相对的地址。而且图片存放的位置是跟项目目录同级的文件夹。在gridview中
`[
'label' => '宣传图',
'attribute'=>'img_path',
'headerOptions' => ['width' => '300'],
'value' => function ($model) {
return Html::a($model->img_path,'http://cc2.99caihong.net/uploads/goodimgs'."$model->img_path",["target" => "_blank"]);
},
'format' => 'raw'
],`
这样的方式显示连接,点击连接可以显示图片。但是这种方式不是我想要的。于是我修改他的format改成image。但是输出不了图片,原因是数据库存放的相对地址。求大佬们有没有更好的解决方案?
在Yii2的GridView中显示图片,通常你需要在数据提供器(DataProvider)中的模型里有一个包含图片URL的字段。然后在GridView的columns设置中使用yii\grid\DataColumn
并配置其value
或format
属性来显示图片。
以下是一个示例:
Item
有一个名为image_url
的字段,存储了图片的URL。```php // 在 Item 模型搜索方法或者数据准备的地方 public function search($params) { $query = Item::find();
// ... 其他查询条件 ...
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// ... 设置其他数据提供器属性 ...
return $dataProvider;
} ```
```php
= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], // 显示图片列 [ 'attribute' => 'image_url', 'format' => ['image', ['width' => '50px']], 'contentOptions' => ['align' => 'center'], ], // 其他列... 'name', 'description', // ... ], ]); ?>```
这样,在Gridview中就会根据image_url
字段的值显示对应的图片了。注意format
参数设置为['image', ['width' => '50px']]
,表示以图片形式显示,并设置了宽度为50像素。你可以根据需要调整这个参数。