1

Я проверил несколько потоков здесь в отношении пейджинга в CodeIgniter, но я не нашел решение моей проблемы.CodeIgniter Paging 404

У меня есть класс контроллера, расположенного на контроллерах/админ/index.php называется «Index», который содержит следующий код:

class Index extends CI_Controller { 

    public function __construct() { 

     parent::__construct(); 

     $this->load->helper("url"); 
     $this->load->helper('events_helper'); 
     $this->load->helper('delegates_helper'); 

     $this->load->model('admin/event_model'); 
     $this->load->model('admin/delegate_model'); 

     $this->load->library('pagination'); 

    } 

    public function index() { 

     $config = array(); 
     $config['base_url'] = base_url() . 'admin'; 
     $config['total_rows'] = $this->event_model->record_count(); 
     $config['per_page'] = 2; 
     $config['uri_segment'] = 2; 

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

     $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; 

     $data['paged_events'] = $this->event_model->get_paged_events($config['per_page'], $page); 
     $data['links'] = $this->pagination->create_links(); 

     $data['events'] = $this->event_model->get_events(); 
     $data['event_courses'] = $this->event_model->get_event_courses(); 
     $data['event_suppliers'] = $this->event_model->get_event_suppliers(); 
     $data['event_venues'] = $this->event_model->get_event_venues(); 
     $data['event_locations'] = $this->event_model->get_event_locations(); 
     $data['event_statuses'] = $this->event_model->get_event_statuses(); 
     $data['event_prices'] = $this->event_model->get_event_prices(); 
     $data['event_types'] = $this->event_model->get_event_types(); 
     $data['event_tutors'] = $this->event_model->get_event_tutors(); 
     $data['event_delegates'] = $this->event_model->get_event_delegates(); 
     $data['event_delegate_statuses'] = $this->event_model->get_event_delegate_statuses(); 

     $this->load->view('templates/admin/header', $data); 
     $this->load->view('admin/index', $data); 
     $this->load->view('templates/admin/footer'); 

    } 

} 

Теперь, если я иду на локальный/крем/public_html/админ правильное количество результатов и ссылки на следующие страницы рендеринга, но когда я нажимаю далее или перехожу на страницу 2 или 3, я получаю ошибку 404.

Теперь я попытался изменить свой базовый URL для:

$config['base_url'] = base_url() . 'admin/index'; 

и:

$config['base_url'] = base_url() . 'admin/index/'; 

и:

$config['base_url'] = base_url() . 'admin/'; 

Хотя также меняю uri_segment 1, 2 и 3 соответственно, но я получаю тот же результат.

Я даже попытался с помощью:

$route['admin/(:num)'] = 'admin/$1'; 

и:

$route['admin/(:num)'] = 'admin'; 

Тем не менее, я получаю ошибку 404.

Это мои модели функции в моем классе «Event_Model»:

public function record_count() { 

     $this->db->select_sum('event_active'); 
     $this->db->from('events'); 
     $this->db->where('event_active', 1); 
     $query = $this->db->get(); 
     $total_active_events = $query->row()->event_active; 

     if($total_active_events > 0) { 

      return $total_active_events; 

     } 

     return false; 

    } 

    public function get_paged_events($limit, $start) { 

     $this->db->limit($limit, $start); 
     $this->db->where('events.event_active = 1'); 
     $this->db->order_by('events.event_start_date', 'asc'); 
     $query = $this->db->get('events'); 

     if($query->num_rows() > 0) { 

      foreach ($query->result() as $row) { 

       $data[] = $row; 

      } 

      return $data; 

     } 

     return false; 

    } 

я немного застрял на этом и был бы признателен за вашу помощь. Благодарю.

EDIT: Добавлена ​​routes.php

$route['default_controller'] = "index"; 
$route['404_override'] = ''; 
$route['admin/(:num)'] = 'admin/index/$1'; 
+0

Можем ли мы узнать, что является URL вашего 404? 'localhost/cream/public_html/admin/index/2' Думаю? –

+0

Это http: // localhost/cream/public_html/admin/2, или если я изменил «base_url» на admin/index, он станет http: // localhost/cream/public_html/admin/index/2 –

+0

Кто-нибудь получил какие-либо Идеи по этому поводу, я очень в тупике? –

ответ

3

$route['admin/(:num)'] = 'admin/index/$1'; должен находиться в config/routes.php - вы не можете добавить маршруты к контроллеру методы.

+0

Привет, я забыл упомянуть, что $ route находится в файле config/routes.php, а не в контроллере. –

+1

Это не то, что я видел в вашем коде 5 минут назад ;-) – Mudshark

+0

Да, как я уже сказал, это было в файле routes.php, но оно также было в контроллере, как вы можете видеть в моем редактировании выше, я удалил его от контроллера, а также добавил мой route.php код, но 404 все еще сохраняется. Благодарю. –

0

У вас есть переписывание URL-адресов на вашем веб-сервере? Если нет, попробуйте localhost/path/to/codeigniter/index.php/admin. Если вы хотите пропустить index.php, прочитайте о mod_rewrite (если вы используете apache) и проверьте руководство пользователя codeigniter для функции site_url, которое может быть полезно для создания URL-адресов на сайте.

+0

Да, это все настройки с использованием .htaccess и правильной работы. –

1

ОК, я выяснил, что происходит.

При доступе к постраничному результату, отличному от первой страницы, я был в URI «localhost/cream/public_html/admin/$ 1», где $ 1 представляет номер страницы.

В коде контроллера «Admin» под функцией index() значение свойства $ config ['uri_segment'] необходимо установить равным 2. Это само по себе не устранило бы проблему, но это было правильный сегмент URI.

Далее мне нужно было добавить следующие 2 маршрута к маршрутам.PHP ':

$route['admin'] = 'admin/admin'; 
$route['admin/:num'] = 'admin/admin'; 

Первый путь, потому что я теперь изменил мой контроллер имя класса „Admin“ и его имя файла в „admin.php“, так что мне нужен маршрут, который будет работать, когда пользователь был в следующий URI:

localhost/cream/public_html/admin/ 

Второй маршрут был изменить маршрут номер страницы к соответствующему контроллеру, который был теперь "админ/админ.

Это было. Моя разбивка на страницы теперь работает.

Все, что мне нужно сделать, это заставить его изменить переменную «$ limit», чтобы ее можно было динамически изменять с помощью раскрывающегося списка. Я должен уметь передавать значение выпадающего списка до $ _POST и втягивать его в мой 'get_paged_events();' функции в моей модели. Я дам вам знать, как я продвигаюсь.

Приветствия для всех людей помощи.

1

Чтобы избежать индекса из вашей пейджинговой просто следуйте ниже шаг

Step1: настроить /config/routes.php

$route['controller/(:num)'] = "controller/index/$1"; 
    It convert your url www.yourdomian.com/controller/(number) to www.yourdomain.com/controller/index/(number) 

Шаг 2: Настройка кода постраничной с $ конфиге [ 'uri_segment «] = 2, как показано ниже

 $config['base_url'] = base_url().'controller/'; 
     $config['display_pages'] = TRUE; 
     $config['first_link'] = 'First'; 
     $config['total_rows'] = (your total rows); 
     $config['uri_segment'] = 2; 
     $this->pagination->initialize($config); 
     echo $this->pagination->create_links(); 

приветствий ..