ライブラリlaravelファイルマネージャーの時間によるファイルの並べ替えを処理する手順
- 24-07-2022
- Toanngo92
- 0 Comments
最近のプロジェクトでは、laravel-filemanagerのiframeが呼び出されたときに、「時間DESC」の順序でファイルをロードする必要がありました。 (デフォルトでは、laravelファイルマネージャーのファイルはアルファベット順にソートされています。)この問題は、ファイルの数が多すぎて、ユーザーがアップロードしたばかりのファイルを見つけることができない場合に発生します。
ドキュメントを読んだとき、この状況でカスタムオプションが表示されなかったため、問題を解決するためにスタックオーバーフローについて学習するのに少し時間がかかりました。そのため、今日この記事を書き直して、調査にかかる時間を節約しました。ベンダーディレクトリのコードを直接編集する必要があるため、これは悪い解決策です。更新時に問題が発生するため、次のコード兄弟がメンテナンスフローを理解できるように、プロジェクトにコメントしてください。
ステップ1:ファイルvendor / unisharp / laravel-filemanager / public / js/script.jsにアクセスします
次の変数を編集して、サーバーを呼び出してファイルを取得するときに要求パラメーターを変更します。
var sort_type = 'alphabetic';
編集先:
var sort_type = 'time';
ステップ2:ファイルvendor / unisharp / laravel-filemanager / src / Controllers/ItemsController.phpにアクセスします
ItemsController.phpファイルの古いgetItems()関数にコメントを付けるか削除します
/*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'), ]; }*/
ソースコードを次のように編集します。
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'), ]; }
さて、頑張ってください!
詳細については、リンクを参照してください: https ://stackoverflow.com/questions/47003766/laravel-filemanager-sort-by-time-default