1

我已經檢查了這裏關於在CodeIgniter中分頁的幾個線程,但我還沒有找到解決我的問題的方法。CodeIgniter尋呼404

我必須位於控制器,控制器類/管理/ index.php文件稱爲「索引」,它包含以下代碼:

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'); 

    } 

} 

現在,如果我去到localhost /霜/的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; 

    } 

我有點停留在這一個,並感謝您的幫助。謝謝。

編輯:添加routes.php文件

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

我們可以知道404的URL是什麼嗎? 'localhost/cream/public_html/admin/index/2'我猜? – 2013-03-05 15:37:08

+0

它是http:// localhost/cream/public_html/admin/2,或者如果我將'base_url'更改爲admin/index,它將變爲http:// localhost/cream/public_html/admin/index/2 – 2013-03-05 16:17:33

+0

有沒有人關於這一點的想法,我現在很難過? – 2013-03-06 11:27:54

回答

3

$route['admin/(:num)'] = 'admin/index/$1';需要駐留在config/routes.php - 你不能添加路由控制器方法。

+0

嗨,我忘了提及$ route是在config/routes.php文件中,而不是控制器。 – 2013-03-05 16:04:58

+1

這不是我在5分鐘前在代碼中看到的;-) – Mudshark 2013-03-05 16:13:43

+0

是的,正如我所說它在routes.php文件中,但它也在控制器中,正如您在我上面的編輯中看到的,我已將它刪除從控制器,也添加了我的routes.php代碼,但404仍然存在。謝謝。 – 2013-03-05 16:16:13

0

您的網絡服務器上是否有網址重寫?如果不這麼做,請嘗試localhost/path/to/codeigniter/index.php/admin。如果你想跳過index.php然後閱讀關於mod_rewrite(如果你使用的是Apache),並檢查codeigniter的site_url函數用戶指南,這可能會有助於生成現場網址。

+0

是的,它的所有設置使用.htaccess並正常工作。 – 2013-03-05 16:05:27

1

好吧,我已經知道發生了什麼。

當訪問第一頁以外的分頁結果時,我在URI'localhost/cream/public_html/admin/$ 1',其中$ 1代表頁碼。

在我的'管理員'控制器代碼中,在index()函數下,'$ config ['uri_segment']'屬性值需要設置爲2.僅此一項就不能解決問題,但它是正確的URI段。

接下來,我需要將以下2條路線添加到'路線。PHP的:

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

第一條路線是因爲我現在已經改變了我的控制器類名‘管理員’,它的名字爲‘admin.php的’,所以我需要當用戶在將工作路線以下URI:

localhost/cream/public_html/admin/ 

第二條路線是將頁碼重新路由到正確的控制器,現在是'admin/admin'。

就是這樣。我的分頁正在工作。

我現在需要做的就是讓它改變'$ limit'變量,以便通過下拉菜單來動態改變它。我應該能夠將下拉列表的值傳遞給$ _POST並將其放入我的'get_paged_events();'功能在我的模型中。我會讓你知道我如何繼續。

爲所有幫助人員歡呼。

1

爲了避免分頁指數只要按照下面的步驟

第一步:定製/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) 

第二步:用$配置自定義您的分頁代碼['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(); 

歡呼聲..