如何从 Codeigniter 中的 URL 中删除“&per_page=”

Posted

技术标签:

【中文标题】如何从 Codeigniter 中的 URL 中删除“&per_page=”【英文标题】:How to remove "&per_page=" from URL in Codeigniter 【发布时间】:2018-05-30 10:26:34 【问题描述】:

我被这个问题困住了。我在我的网址上遇到了这个问题。我的网址中收到了&per_page=

我在 CI 中使用分页,其中我使用了以下代码但无法删除它。

我的网址:http://localhost/abroad_education/entrance/index/0&per_page=3

预期网址:http://localhost/abroad_education/entrance/index/0/3

控制器

class Entrance extends CI_Controller

public function __construct()
 
    parent::__construct();  
    $this->load->helper('url');
    $this->load->helper('form');

    $this->load->model('Pagination_model',"pgn");


public function index()
   


    if($this->input->post('title') !="")
    
        $title = trim($this->input->post('title'));
    
    else
        $title = str_replace("%20",' ',($this->uri->segment(3))?$this->uri->segment(3):0);
     

    $data['search_title']=$title;       
    print_r($title); 
    $allrecord = $this->pgn->allrecord($title);
    $baseurl =  base_url().$this->router->class.'/'.$this->router->method."/".$title;

    $paging=array();
    $paging['base_url'] =$baseurl;
    $paging['total_rows'] = $allrecord;
    $paging['per_page'] = 3;
    $paging['uri_segment']= 4;
    $paging['num_links'] = 8;
    $paging['first_link'] = 'First';
    $paging['first_tag_open'] = '<li>>';
    $paging['first_tag_close'] = '</li>';
    $paging['num_tag_open'] = '<li>';
    $paging['num_tag_close'] = '</li>';
    $paging['prev_link'] = 'Prev';
    $paging['prev_tag_open'] = '<li>';
    $paging['prev_tag_close'] = '</li>';
    $paging['next_link'] = 'Next';
    $paging['next_tag_open'] = '<li>';
    $paging['next_tag_close'] = '</li>';
    $paging['last_link'] = 'Last';
    $paging['last_tag_open'] = '<li>';
    $paging['last_tag_close'] = '</li>';
    $paging['cur_tag_open'] = '<li class="active"><a href="javascript:void(0);">';
    $paging['cur_tag_close'] = '</a></li>';

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

    $data['limit'] = $paging['per_page'];
    $data['number_page'] = $paging['per_page']; 
    $data['offset'] = ($this->uri->segment(4)) ? $this->uri->segment(4):'0/';   
    $data['nav'] = $this->pagination->create_links();
    $data['datas'] = $this->pgn->data_list($data['limit'],$data['offset'],$title);
    $data['include'] = 'frontend/entrance/entrance';
    $this->load->view('frontend/container', $data);



型号

class Pagination_model extends CI_Model
function __construct()
parent::__construct();  
    $this->load->library(array('session','pagination'));
    $this->load->helper('url');
    $this->load->database();    



public function allrecord($title)
    if(!empty($title))
        $this->db->like('ee_name',$title);
    
    $this->db->select('*');
    $this->db->from('vm_entrance_exams');
    $rs = $this->db->get();
    return $rs->num_rows();


public function data_list($limit,$offset,$title)
    if(!empty($title))
        $this->db->like('ee_name',$title);
    
    $this->db->select('*');
    $this->db->from('vm_entrance_exams');
    $this->db->order_by('ee_id','ee_desc');
    $this->db->limit($limit,$offset);
    $rs = $this->db->get();
    return $rs->result_array();


【问题讨论】:

我经常使用分页,但默认情况下从来没有出现过这个问题。可能是因为这个$baseurl = base_url().$this-&gt;router-&gt;class.'/'.$this-&gt;router-&gt;method."/".$title; 我会像这样$config['base_url'] = base_url() . 'product/productBrand/'.$id; 做分页基本网址。 Cz 我知道它的实际 URL,而不是像 $this-&gt;router-&gt;method 这样的魔术方法 @AbdullaNilam。我什至尝试了相同的“&per_page =”重复..而不是这个我只需要'/'..只有这样我的代码才能工作。 @AbdullaNilam .. 谢谢你先生.. 我得到了解决方案.. 【参考方案1】:

检查您是否在 /application/config.php 中将“enable_query_strings”设置为 false

 $config['enable_query_strings'] = FALSE;

来自docs。

如果您将 $config['enable_query_strings'] 设置为 TRUE 您的链接 将使用查询字符串自动重写。这个选项可以 也可以显式设置。

【讨论】:

以上是关于如何从 Codeigniter 中的 URL 中删除“&per_page=”的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Codeigniter 4 中的 url 中删除 public/index.php/

如何从 CodeIgniter 中的 URL 中删除控制器和函数名称

如何从 Codeigniter 中的 URL 中删除“&per_page=”

codeigniter 从 url 获取值

如何从Codeigniter中的URL中删除“&per_page =”

如何从codeigniter中的模型生成json格式