Gallery.php
1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* Created by PhpStorm.
* User: lishuai
* Date: 2022/2/11
* Time: 5:30 PM
*/
namespace App\Admin\Extensions;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Displayers\AbstractDisplayer;
use Dcat\Admin\Support\Helper;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Facades\Storage;
class Gallery extends AbstractDisplayer
{
public function display($server = '', $width = 100, $height = 200)
{
Admin::js('@js/viewer.js');
Admin::css([
'@css/gallery.css',
'@css/viewer.css'
]);
$defaultArgs = [
'server' => $server,
'width' => $width,
'height' => $height,
];
['server' => $server, 'width' => $width, 'height' => $height] = $defaultArgs;
if ($this->value instanceof Arrayable) {
$this->value = $this->value->toArray();
}
$groupId = $this->grid->getTableId().'_'.$this->getKey().'_'.$this->column->getName().'_gallery_group';
$src = []; // 避免 $src 未定义
foreach (Helper::array($this->value) as $k => $v) {
if (url()->isValidUrl($v) || mb_strpos($v, 'data:image') === 0) {
$src[] = $v;
} elseif ($server) {
$src[] = rtrim($server, '/').'/'.ltrim($v, '/');
} else {
$src[] = Storage::disk(config('admin.upload.disk'))->url($v);
}
}
return Admin::view('admin.grid.gallery', ['src' => $src, 'width' => $width, 'height' => $height, 'id' => $groupId]);
}
}