如何更改<a> tag in CodeIgniter pagination</a>的href

时间:2013-02-06 11:16:46

标签: php codeigniter pagination

我需要在CodeIgniter分页中更改<a>标记的href。 CodeIgniter的$this->pagination->create_links();函数创建如下链接:

<a href="http://example.com/index.php/admin/view/3">3</a>

但是,我需要所有段末尾的页码(3)。 像这样:

<a href="http://example.com/index.php/admin/view/field/created/3">3</a>
<a href="http://example.com/index.php/admin/view/field/created/order/asc/3">3</a>

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您需要将URL作为配置变量传递:

$config = array('base_url' => site_url('/admin/view/field/created'));
$this->pagination->initialize($config);
$this->pagination->create_links();

有关更多配置的可能性,请参阅documentation

答案 1 :(得分:0)

我也碰到了这个。最容易解决方案?重新配置您的URL结构,以便分页始终是第一个分段。为了不弄乱排序字段,只需确保页面始终以分页加载,即首次加载时在该段中放置0。除了更改您的设置以使用查询字符串之外我不认为您可以轻松移动分页段,我想如果配置中的逻辑可以执行一些操作,例如:

if(is_numeric($this->uri->segment(2)
{
    $config['uri_segment'] = 2;
} else if (is_numeric($this->uri->segment(3) {
    $config['uri_segment'] = 3;
}

但老实说,根据您添加的额外细分数量,这可能会非常难看。

答案 2 :(得分:0)

您可以尝试计算“页码”的uri段和“base url”,如下所示:

// Parsing the URI into an associative array
$uri = $this->uri->uri_to_assoc(4);

$segments = count($uri);

// Calculate the uri segment and base url
if ($segments > 1) {
   $uri_segment  = 3 + $segments - 1; // 3 segments "index.php/admin/view/ + SORT_SEGMENTS - PAGE_SEGMENT

   array_pop($uri); // Pop the page number
   $base_url     = site_url('admin/view/'. implode('/', $uri));
} else {
   $uri_segment  = 4;
   $base_url     = site_url('admin/view/');
}

// Pagination config
$config['base_url']         = $base_url;
$config['uri_segment']      = $uri_segment;
$config['use_page_numbers'] = TRUE;
$config['total_rows']       = YOUR_CONFIG;
$config['num_links']        = YOUR_CONFIG;
$config['per_page']         = YOUR_CONFIG; 

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

$pagination = $this->pagination->create_links();
PD:我是阿根廷人,我的英语技能有点差。