Intereting Posts
Загрузите библиотеку, передав параметр в конструктор в codeigniter Форматирование строки даты – PHP Сохранить CSV-файлы в базе данных mysql Почему isDot () терпит неудачу? (PHP) codeIgniter Сообщение Javascript с сообщением об успешном обновлении JQuery :: Ajax работает индикатор выполнения? WooCommerce: функция, возвращающая все идентификаторы продукта в определенной категории Я нарушаю любую «хорошую практику php» в следующем массиве php, который имеет дело с 3 (человеческими) языками? получение расстояния между двумя точками с помощью google gps api с php yii: невозможно получить изображение, используя "через" Использование сеанса для ограничения подачи заявки по времени Найти div с классом, используя PHP Simple HTML DOM Parser Передача данных из одного текстового поля в другой на другой странице с помощью POST Ошибка синтаксиса MySQL. Не удается решить Как вы запрещаете людям переходить на страницу, которая должна использоваться как страница входа?

как создать разбиение на страницы для URL с параметрами в codeigniter?

у нас есть приложение, которое имеет результат страницы на основе определенных параметров, таких как domain.com/index.php/welcome/student/male Здесь welcome что student контроллер – это имя метода, имя male – параметр, теперь нам нужна разбивка на страницы для этого, но проблема человек может также использовать подкатегорию, подобную этой steven где steven – это еще один параметр, как создать разбиение на страницы для этого типа URL-адресов. Заранее спасибо 🙂

Некоторые проблемы при наличии необязательных параметров наряду с разбиением на страницы:

  1. Размещение смещения с разбивкой по страницам изменяется в URL на основе количества предоставленных параметров.
  2. Если необязательные параметры не заданы, смещение с разбивкой по страницам будет действовать как параметр.

Способ 1:
Используйте строки запроса для разбивки на страницы:

 function student($gender, $category = NULL) { $this->load->library('pagination'); $config['page_query_string'] = TRUE; $config['query_string_segment'] = 'offset'; $config['base_url'] = base_url().'test/student/'.$gender; // add the category if it's set if (!is_null($category)) $config['base_url'] = $config['base_url'].'/'.$category; // make segment based URL ready to add query strings // pagination library does not care if a ? is available $config['base_url'] = $config['base_url'].'/?'; $config['total_rows'] = 200; $config['per_page'] = 20; $this->pagination->initialize($config); // requested page: $offset = $this->input->get('offset'); //... } 

Способ 2:
Предполагая, что category никогда не будет числом, и если последний сегмент является числовым значением, то это смещение с разбивкой по страницам не является параметром функции:

 function student($gender, $category = NULL) { // if the 4th segment is a number assume it as pagination rather than a category if (is_numeric($this->uri->segment(4))) $category = NULL; $this->load->library('pagination'); $config['base_url'] = base_url().'test/student/'.$gender; $config['uri_segment'] = 4; // add the category if it's set if (!is_null($category)) { $config['uri_segment'] = $config['uri_segment'] + 1; $config['base_url'] = $config['base_url'].'/'.$category; } $config['total_rows'] = 200; $config['per_page'] = 20; $this->pagination->initialize($config); // requested page: $offset = ($this->uri->segment($config['uri_segment'])) ? $this->uri->segment($config['uri_segment']) : 1; //... } 

Я предпочитаю первый метод, потому что он не мешает параметрам функции, и было бы проще реализовать поддержку разбиения на страницы на абстрактном уровне.

Я работал с codeigniter, но я думаю, что, возможно, вам нужно использовать config / routes.php. Например:

 $route['^(bar1|bar2)/routes/(:any)/(:any)'] = "routes/get_bar/$2/$3"; 

вы можете написать функцию в контроллере (в этом случае маршруты) следующим образом:

 public function get_bar($bar1 = null, $bar2 = null) 

Надеюсь, это поможет вам!