Laravel Version: 5.6.35
PHP Version: 7.1
Laravel-admin: 1.5.x-dev
Server: Apache/2.4.33 (Win32)
Description:
在上传图片并保存到数据库字段(字段类型是字符串类型)后,在Grid表格中无法显示,但在编辑表单中的multipleImage组件中可以正常显示。
Steps To Reproduce:
这是我的代码:
模型中
public function setImagesAttribute($images)
{
if (is_array($images))
{
$this->attributes['images'] = json_encode($images);
}
}
public function getImagesAttribute($images)
{
return json_decode($images, true);
}
在Grid表格中显示图片字段
$grid->images(trans('admin.image'))->display(function ($images){
return count($images) > 0 ? $images[0] : ‘no-image.png’;
})->image(url('media'), 100, 80);
使用image(url('media'), 100, 80)添加前缀,url('media')返回的url最后没有 '/',加上 '/'会被清除。所以导致无法正常显示图片。
我在Encore\Admin\Grid\Displayers\Image中的display()方法修改如下正常:
public function display($server = '', $width = 200, $height = 200)
{
if ($this->value instanceof Arrayable) {
$this->value = $this->value->toArray();
}
return collect((array) $this->value)->filter()->map(function ($path) use ($server, $width, $height) {
if (url()->isValidUrl($path)) {
$src = $path;
} elseif ($server) {
$src = $server. '/' .$path; /*! 这里添加 '/' */
} else {
$src = Storage::disk(config('admin.upload.disk'))->url($path);
}
return "";
})->implode(' ');
}