فهرست منبع

扩展了 file() 方法,让它支持多文件显示,同时也修改了 image() 方法,让它们可以直接支持通过 multipleImage()、multipleFile() 保存到数据库中的 json 格式的路径数组。

vagra 4 سال پیش
والد
کامیت
a9d92d5d5b
1فایلهای تغییر یافته به همراه47 افزوده شده و 35 حذف شده
  1. 47 35
      src/Show/Field.php

+ 47 - 35
src/Show/Field.php

@@ -225,7 +225,9 @@ class Field implements Renderable
                 return '';
             }
 
-            return collect((array) $path)->transform(function ($path) use ($server, $width, $height) {
+            $path = Helper::array($path);
+
+            return collect($path)->transform(function ($path) use ($server, $width, $height) {
                 if (url()->isValidUrl($path)) {
                     $src = $path;
                 } elseif ($server) {
@@ -258,46 +260,56 @@ class Field implements Renderable
         $field = $this;
 
         return $this->unescape()->as(function ($path) use ($server, $field) {
-            $name = basename($path);
+            if (empty($path)) {
+                return '';
+            }
 
-            $field->wrap(false);
+            $path = Helper::array($path);
 
-            $size = $url = '';
-
-            if (url()->isValidUrl($path)) {
-                $url = $path;
-            } elseif ($server) {
-                $url = $server.$path;
-            } else {
-                $storage = Storage::disk(config('admin.upload.disk'));
-                if ($storage->exists($path)) {
-                    $url = $storage->url($path);
-                    $size = ($storage->size($path) / 1000).'KB';
+            $list = collect($path)->transform(function ($path) use ($server, $field) {
+            
+                $name = basename($path);
+
+                $field->wrap(false);
+
+                $size = $url = '';
+
+                if (url()->isValidUrl($path)) {
+                    $url = $path;
+                } elseif ($server) {
+                    $url = $server.$path;
+                } else {
+                    $storage = Storage::disk(config('admin.upload.disk'));
+                    if ($storage->exists($path)) {
+                        $url = $storage->url($path);
+                        $size = ($storage->size($path) / 1000).'KB';
+                    }
                 }
-            }
 
-            if (! $url) {
-                return '';
-            }
+                if (! $url) {
+                    return '';
+                }
 
-            $icon = Helper::getFileIcon($name);
-
-            return <<<HTML
-<ul class="mailbox-attachments clearfix">
-    <li style="margin-bottom: 0;">
-      <span class="mailbox-attachment-icon"><i class="{$icon}"></i></span>
-      <div class="mailbox-attachment-info">
-        <div class="mailbox-attachment-name">
-            <i class="fa fa-paperclip"></i> {$name}
-            </div>
-            <span class="mailbox-attachment-size">
-              {$size}&nbsp;
-              <a href="{$url}" class="btn btn-white  btn-xs pull-right" target="_blank"><i class="fa fa-cloud-download"></i></a>
-            </span>
-      </div>
-    </li>
-  </ul>
+                $icon = Helper::getFileIcon($name);
+
+                return <<<HTML
+<li style="margin-bottom: 0;">
+<span class="mailbox-attachment-icon"><i class="{$icon}"></i></span>
+<div class="mailbox-attachment-info">
+    <div class="mailbox-attachment-name">
+        <i class="fa fa-paperclip"></i> {$name}
+        </div>
+        <span class="mailbox-attachment-size">
+        {$size}&nbsp;
+        <a href="{$url}" class="btn btn-white  btn-xs pull-right" target="_blank"><i class="fa fa-cloud-download"></i></a>
+        </span>
+</div>
+</li>
 HTML;
+            })->implode('&nbsp;');
+
+            return "<ul class=\"mailbox-attachments clearfix\">{$list}</ul>";
+
         });
     }