ここで CodeIgniter のページングに関するいくつかのスレッドを確認しましたが、問題の解決策が見つかりませんでした。
controllers/admin/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' );
}
}
localhost/cream/public_html/admin に移動すると、正しい量の結果が表示され、次のページへのリンクがレンダリングされますが、[次へ] をクリックするか、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';