Instruções para lidar com a classificação de arquivos por tempo para o gerenciador de arquivos laravel da biblioteca
- 24-07-2022
- Toanngo92
- 0 Comments
Em um projeto recente, precisei carregar arquivos na ordem "time DESC" quando o iframe do laravel-filemanager foi chamado. (Por padrão, os arquivos no gerenciador de arquivos laravel são classificados em ordem alfabética.) O problema ocorrerá quando o número de arquivos for muito grande, o usuário não conseguir encontrar o arquivo que acabou de enviar.
Ao ler os documentos, não vi as opções personalizadas nesta situação, por isso demorou um pouco mais de tempo para aprender sobre estouro de pilha para resolver o problema, então reescrevi este artigo hoje para economizar seu tempo de pesquisa, embora do meu do ponto de vista, esta é uma solução ruim, pois você tem que editar diretamente o código no diretório do fornecedor, haverá problemas na atualização, então por favor comente o projeto para que os irmãos de código a seguir entendam o fluxo de manutenção.
Etapa 1: acesse o arquivo vendor/unisharp/laravel-filemanager/public/js/script.js
Edite a seguinte variável para alterar o parâmetro de solicitação ao chamar o servidor para obter arquivos:
var sort_type = 'alphabetic';
Editado em:
var sort_type = 'time';
Passo 2: acesse o arquivo vendor/unisharp/laravel-filemanager/src/Controllers/ItemsController.php
Comente ou exclua a antiga função getItems() do arquivo 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'), ]; }*/
Edite o código-fonte para:
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'), ]; }
Então ok, boa sorte!
Consulte o link para obter detalhes: https://stackoverflow.com/questions/47003766/laravel-filemanager-sort-by-time-default