у нас есть приложение, которое имеет результат страницы на основе определенных параметров, таких как domain.com/index.php/welcome/student/male
Здесь welcome
что student
контроллер – это имя метода, имя male
– параметр, теперь нам нужна разбивка на страницы для этого, но проблема человек может также использовать подкатегорию, подобную этой steven
где steven
– это еще один параметр, как создать разбиение на страницы для этого типа URL-адресов. Заранее спасибо 🙂
Некоторые проблемы при наличии необязательных параметров наряду с разбиением на страницы:
Способ 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)
Надеюсь, это поможет вам!