Anweisungen zum Sortieren von Dateien nach Zeit für den Laravel-Dateimanager der Bibliothek
- 24-07-2022
- Toanngo92
- 0 Comments
In einem kürzlich durchgeführten Projekt musste ich Dateien in der Reihenfolge "time DESC" laden, wenn der iframe von laravel-filemanager aufgerufen wurde. (Standardmäßig werden Dateien im Laravel-Dateimanager alphabetisch sortiert.) Das Problem tritt auf, wenn die Anzahl der Dateien zu groß ist und der Benutzer die gerade hochgeladene Datei nicht finden kann.
Beim Lesen der Dokumentation habe ich die benutzerdefinierten Optionen in dieser Situation nicht gesehen, daher hat es etwas länger gedauert, den Stapelüberlauf zu lernen, um das Problem zu lösen, also habe ich diesen Artikel heute umgeschrieben, um Ihnen Zeit bei der Recherche zu sparen, obwohl From my Aus Sicht ist dies eine schlechte Lösung, da Sie den Code direkt im Herstellerverzeichnis bearbeiten müssen, da es Probleme beim Aktualisieren gibt. Kommentieren Sie das Projekt daher bitte, damit die folgenden Code-Brüder den Wartungsablauf verstehen.
Schritt 1: Greifen Sie auf die Datei vendor/unisharp/laravel-filemanager/public/js/script.js zu
Bearbeiten Sie die folgende Variable, um den Anforderungsparameter beim Aufrufen des Servers zum Abrufen von Dateien zu ändern:
var sort_type = 'alphabetic';
Bearbeitet in:
var sort_type = 'time';
Schritt 2: Greifen Sie auf die Datei vendor/unisharp/laravel-filemanager/src/Controllers/ItemsController.php zu
Kommentieren oder löschen Sie die alte Funktion getItems() der Datei ItemsController.php
/*public function getItems() { $currentPage = self::getCurrentPageFromRequest(); $perPage = $this->helper->getPaginationPerPage(); $items = array_merge($this->lfm->folders(), $this->lfm->files()); return [ 'items' => array_map(function ($item) { return $item->fill()->attributes; }, array_slice($items, ($currentPage - 1) * $perPage, $perPage)), 'paginator' => [ 'current_page' => $currentPage, 'total' => count($items), 'per_page' => $perPage, ], 'display' => $this->helper->getDisplayMode(), 'working_dir' => $this->lfm->path('working_dir'), ]; }*/
Bearbeiten Sie den Quellcode wie folgt:
use IlluminateHttpRequest; // định nghĩa kiểu dữ liệu request để hứng tham số từ request // sửa hàm getItems trong Controller public function getItems(Request $request) { /* dd($request) => nếu dump biến này ra, chúng ta sẽ thấy parameter url được thay đổi từ alphabetic thành time nếu sửa đúng */ $currentPage = self::getCurrentPageFromRequest(); $perPage = $this->helper->getPaginationPerPage(); $files = $this->lfm->files(); if($request->sort_type=='time'){ $files = array_reverse($files); } $items = array_merge($this->lfm->folders(), $files); return [ 'items' => array_map(function ($item) { return $item->fill()->attributes; }, array_slice($items, ($currentPage - 1) * $perPage, $perPage)), 'paginator' => [ 'current_page' => $currentPage, 'total' => count($items), 'per_page' => $perPage, ], 'display' => $this->helper->getDisplayMode(), 'working_dir' => $this->lfm->path('working_dir'), ]; }
Also gut, viel Glück!
Einzelheiten finden Sie unter folgendem Link: https://stackoverflow.com/questions/47003766/laravel-filemanager-sort-by-time-default