CodeIgniter:可以通过分页库获得当前页面链接吗?

时间:2013-08-26 09:27:46

标签: php jquery ajax codeigniter pagination

我已经通过CodeIgniter分页库创建了分页项目,代码如下:

echo $this->pagination->create_links()

一切都运作良好。

现在我想通过ajax加载数据,我已经完成了ajax部分。但问题是将clicked item作为current item并安排current item的链接,因为它不再是最新的。

假设我有一个分页如下:

[1] 2 [3] [4] [5] [6] [>] [Last >]

现在2是当前项目,4是点击项目。

我已检查CodeIgniter Pagination library,但它没有启用或禁用当前页面链接的任何选项。是否可以在不修改库的情况下获得当前页面链接?

提前致谢。

5 个答案:

答案 0 :(得分:1)

我把它全部拿回来。需要更改分页库。

https://github.com/EllisLab/CodeIgniter/blob/develop/system/libraries/Pagination.php

第560行

$output .= $this->cur_tag_open.$loop.$this->cur_tag_close

需要替换为

$append = $this->prefix.$i.$this->suffix;
$output .= $this->num_tag_open.'<a href="'.$this->base_url.$append.'"'.$attributes.$this->_attr_rel('start').'>'.$loop.'</a>'.$this->num_tag_close;

应该这样做。

答案 1 :(得分:0)

您无需在服务器端修改任何内容。只需使用普通的旧vanila jquery。

这是怎么做的。

假设我将链接包裹在<div id="pagination"></div>

  • 现在,要调用ajax,请使用jQuery(body).on('click','#pagination a', function(e){....})。 在此代码中,jQuery(this)将引用已单击的链接。
  • 接下来,在成功通话后,从所有链接中删除active(或给定的任何其他类)。比如jQuery('#pagination a').removeClass('active')
  • 接下来,如果您还记得,jQuery(this)仍然提到当前点击的项目。 (最好在点击开始时将其保存为var current = jQuery(this),以便引用不会改变。现在,只需添加该类。jQuery(current).addClass('active')

你完成了!无需在服务器端做任何有趣的事情。有时客户方就足够了。

P.S。我忘了CI如何呈现分页链接。如果你给出链接,我可以写出实际的代码。

答案 2 :(得分:0)

var_dump($this->pagination);一切都在里面

然后,如果您检查Pagination.php库,您也可以使用这些参数:

var $cur_tag_open = '';
var $cur_tag_close = '';

所以在初始化分页时尝试调用它们

$pagination['cur_tag_open'] = '<span class="current-link">';
$pagination['cur_tag_close'] = '</span>';
$this->pagination->initialize($pagination); //now current link should be wrapped into the <span class="current-link"></span>

答案 3 :(得分:0)

我认为你不需要改变Pagination库中的任何内容。您只需要使用 uri_segment()功能。 Pagination库的参数如下:

$config['uri_segment'] = 5;

默认值为3. [使用适用于您的URI结构的值]。

此变量与uri_segment()函数一起用于确定当前页面,在最新版本的CodeIgniter 2.1.4中,您将在分页中的第142行处找到它.php 库。

页面标识符的相应uri_segment可以按如下方式计算,如果使用类似这样的URI:http://example.com/controller/function/page/ 20 那么您可以按如下方式获取当前页面,

$page = $this->uri_segment(4);

希望有所帮助。

答案 4 :(得分:0)

你真的不需要改变任何东西。 一旦设置了自动页面

  

$ page = 2 //页面应自动设置

现在试试这个

  

$ config [“cur_page”] = $ page;