Codeigniter Pagination 3.0.4 排序目录和文件

问题描述 投票:0回答:1

我有一个带有 codeIgniter 3.0.4 分页库的工作文件管理器。

我试图确保它在分页中首先显示目录,然后显示文件。

目前,codeigniter 分页按名称对目录和文件进行排序。

有关 codeigniter 分页的问题,如何确保它以所有方式首先显示目录。然后整理文件。

<?php

class Filemanager extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('upload');
        $this->load->helper('text');
        $this->load->library('pagination');
    }

    public function index($results = NULL) {    
        $data['title'] = 'File Manager';

        $this_input_get_directory = $this->input->get('directory');

        if (isset($this_input_get_directory)) {
            $directory = scandir(FCPATH . 'images/catalog/' . $this_input_get_directory . '/', 1);
        } else {
            $directory = scandir(FCPATH . 'images/catalog/', 1);
        }

        $files = array_diff($directory, array('.', '..'));
        $files_limit = 3;
        $input_get_per_page = $this->uri->segment(2);
        $input_get_per_page += $files_limit;

        $config['base_url'] = base_url('filemanager');
        $config['total_rows'] = count($files);
        $config['per_page'] = $files_limit;
        $config['uri_segment'] = 2;
        $config['full_tag_open'] = "<ul class='pagination'>";
        $config['full_tag_close'] ="</ul>";
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';
        $config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
        $config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
        $config['next_tag_open'] = "<li>";
        $config['next_tagl_close'] = "</li>";
        $config['prev_tag_open'] = "<li>";
        $config['prev_tagl_close'] = "</li>";
        $config['first_tag_open'] = "<li>";
        $config['first_tagl_close'] = "</li>";
        $config['last_tag_open'] = "<li>";
        $config['last_tagl_close'] = "</li>";

        $this->pagination->initialize($config);

        $data['images'] = array();

        foreach ($files as $file => $value) {

            $url = '';

            if (isset($this_input_get_directory)) {
                $url .= $this_input_get_directory . '/';
            } else {
                $url .= '';
            }  

            if ($file < $input_get_per_page && $file >= $input_get_per_page - $files_limit) {

                if (is_dir(FCPATH . 'images/catalog/' . $value)) {

                    $data['images'][] = array(
                        'thumb' => '',
                        'type' => 'directory',
                        'href' => site_url('filemanager') . '?directory='. $url . $value,
                        'name' => $value
                    );  

                } elseif (is_file(FCPATH . 'images/catalog/' . $url . $value)) {

                    $data['images'][] = array(
                        'thumb' => $this->resize($value, 100, 100),
                        'type' => 'image',
                        'name' => $value
                    );  
                }

            }
        }

        $this->load->view('template/common/filemanager_view', $data);
    }
}
php codeigniter
1个回答
0
投票

解决了我从其他地方找到了一些代码,使其对我有用。我现在也使用了 array_reverse();到目前为止一切正常。

<?php

class Filemanager extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('upload');
        $this->load->helper('text');
        $this->load->library('pagination');
        $this->load->helper('custom');
        define('DIR_IMAGE', FCPATH . 'images/');

    }

    public function index() {
        $data['title'] = 'File Manager';

        if ($this->uri->segment(3)) {

            $this_input_get_directory = $this->uri->segment(2) . '/' . $this->uri->segment(3);

        } else {

            $this_input_get_directory = $this->uri->segment(2) . '/' . $this->uri->segment(3);

        }

        if (isset($this_input_get_directory)) {

            $directory = rtrim(DIR_IMAGE . 'catalog/' . str_replace(array('../', '..\\', '..'), '', $this_input_get_directory), '/');

        } else {

            $directory = DIR_IMAGE . 'catalog';
        }

        // Get directories
        $directories = glob($directory . '/' . '*', GLOB_ONLYDIR);

        if (!$directories) {
            $directories = array();
        }

        // Get files
        $files = array_reverse(glob($directory . '/' . '*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE));

        if (!$files) {
            $files = array();
        }

        // Merge directories and files
        $images = array_merge($directories, $files);

        $files_limit = 6;
        $input_get_per_page = $this->input->get('per_page');
        $input_get_per_page += $files_limit;

        $config['base_url'] = base_url('filemanager');
        $config['total_rows'] = count($images);
        $config['per_page'] = $files_limit;
        $config['page_query_string'] = TRUE;
        $config['full_tag_open'] = "<ul class='pagination'>";
        $config['full_tag_close'] ="</ul>";
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';
        $config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
        $config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
        $config['next_tag_open'] = "<li>";
        $config['next_tagl_close'] = "</li>";
        $config['prev_tag_open'] = "<li>";
        $config['prev_tagl_close'] = "</li>";
        $config['first_tag_open'] = "<li>";
        $config['first_tagl_close'] = "</li>";
        $config['last_tag_open'] = "<li>";
        $config['last_tagl_close'] = "</li>";

        $this->pagination->initialize($config);

        $data['images'] = array();

        foreach ($images as $file => $value) {

            $filename = str_replace(FCPATH . 'images/', '', $value);

            $display_name = basename($filename);

            if ($file < $input_get_per_page && $file >= $input_get_per_page - $files_limit) {

                if (is_dir(DIR_IMAGE . $filename)) {

                    $data['images'][] = array(
                        'thumb' => '',
                        'type' => 'directory',
                        'path' => $value,
                        'name' => $display_name,
                        'href' => site_url('filemanager/' . $display_name)
                    );  

                } else if (is_file(DIR_IMAGE . $filename)) {

                    $data['images'][] = array(
                        'thumb' => $this->resize($filename),
                        'type' => 'image',
                        'path' => $value,
                        'name' => $display_name
                    );  
                }

            }
        }

        $url = '';

        if (isset($this_input_get_directory)) {
            $pos = strrpos($this_input_get_directory, '/');

            if ($pos) {
                $url .= '?directory=' . urlencode(substr($this_input_get_directory, 0, $pos));
            }
        }

        $data['parent'] = base_url('filemanager' . $url);

        $url = '';

        if (isset($this_input_get_directory)) {
            $url .= '?directory=' . $this_input_get_directory;
        }

        $data['refresh'] = base_url('filemanager' . $url);

        $this->load->view('template/common/filemanager_view', $data);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.