CodeIgniter нумерация страниц не работает при нажатии на ссылку

возможно, эта проблема действительно глупая, но я много чего перепробовал и всегда получаю одну и ту же ошибку …

Как вы можете видеть, я пытаюсь использовать разбиение на страницы в CodeIgniter и могу загрузить представление со страницами и ссылками, но когда я нажимаю на ссылку, это говорит «Объект не найден!»

Это мой контроллер:

class Controller extends CI_Controller {

public function __construct() {
parent:: __construct();
$this->load->helper("url");
$this->load->model("Blogs_model");
$this->load->library("pagination");
}

public function index() {
$config = array();
$config["base_url"] = base_url() . "pagination/";
$config["total_rows"] = $this->Blogs_model->record_count();
$config["per_page"] = 2;
$config["uri_segment"] = 3;
$config['first_link'] = 'First';
$config['last_link'] = 'End';
$config['next_link'] = 'Next →';
$config['prev_link'] = '← Prev';

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

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data["results"] = $this->Blogs_model->fetch_entries($config["per_page"], $page);
$data["links"] = $this->pagination->create_links();

$this->load->view("example1", $data);
}
}

routes.php:

route['default_controller'] = "controller";
$route['pagination/(:any)'] = 'pagination';
$route['404_override'] = '';

config.php:

config['base_url']  = 'http://localhost/ci';

Может ли кто-нибудь помочь мне, пожалуйста? Спасибо.

РЕДАКТИРОВАТЬ
Вот моя модель:

class Blogs_model extends CI_Model {

public function __construct() {
parent::__construct();
}

public function record_count() {
return $this->db->count_all("entry");
}

public function fetch_entries($limit, $start) {
$this->db->limit($limit, $start);
$query = $this->db->get("entry");

if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$data[] = $row;
}
return $data;
}
return false;
}
}

И проблема в том, что когда я загружаю страницу: localhost / ci /, она работает правильно, но когда я нажимаю на ссылку, URL-адрес меняется на localhost / ci / pagination / 2 и не работает. Я думаю, это проблема маршрутов, но в любом случае я не уверен.

РЕДАКТИРОВАТЬ 2
Спасибо за все комментарии, ребята, наконец-то мне удалось заставить его работать, но с активным Index.php я имею в виду мой URL:

http://localhost/ci/index.php/controller/index/2

и я хотел бы, чтобы это работало без index.php. Мой код сейчас такой:
контроллер:

class Controller extends CI_Controller {

public function __construct() {
parent:: __construct();
$this->load->helper("url");
$this->load->model("Blogs_model");
$this->load->library("pagination");
}

public function index() {
$config = array();
$config["base_url"] = "http://localhost/ci/index.php/controller/index";
$config["total_rows"] = $this->Blogs_model->record_count();
$config["per_page"] = 2;

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

$data["results"] = $this->Blogs_model->fetch_entries($config["per_page"], $this->uri->segment(3));
$data["links"] = $this->pagination->create_links();

$this->load->view("example1", $data);
}
}

И base_url из config.php есть

http://localhost/ci;

Также файл маршрутов теперь имеет только:

$route['default_controller'] = "controller";
$route['404_override'] = '';

0

Решение

Должно выглядеть примерно так:

Файл маршрутов:

$route['blog/(:num)'] = "controller/index/$1";
$route['blog'] = "controller/index";

контроллер:

public function index($page = 0) {
$news = $this->blog_model->get_blog($page);
}

Модель:

public function get_blog($page) {
$offset = $page * 2;
$stuff = $this->db->get('articles', $offset, 2);
}
0

Другие решения

Вместо этого:

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data["results"] = $this->Blogs_model->fetch_entries($config["per_page"], $page);

Попробуй это:

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$offset = $page==0? 0: ($page-1)*$config["per_page"];
$data["results"] = $this->Blogs_model->fetch_entries($config["per_page"], $offset);

Если ваша модель не выполняет эту работу, вам нужно передать смещение, а не страницу.

0

По вопросам рекламы [email protected]