【问题标题】:CodeIgniter Pagination : Does not create first page's linkCodeIgniter 分页:不创建首页的链接
【发布时间】:2012-06-06 22:26:18
【问题描述】:

我的分页问题还在继续;

我只是用简单的东西进行分页:

        $config['base_url'] = site_url('admin/index/page/');
        $this->load->database();
        $config['total_rows'] = $this->db->count_all('sms');
        $config['per_page'] = 20;
        $offset = $this->uri->segment(4, 0);
        $this->pagination->initialize($config)

我的视图页面有这个视图分页命令:

        <?php echo $this->pagination->create_links(); ?> 

超过20行后,分页开始分页列表,但html输出显示如下:

 1 2 3

在视图中,第 1 页没有链接,也没有跳转下一页,第 1 页没有链接。只是它的强。

我的第二个问题是:我只有 30 条记录,但 CI 分页创建了带有空行的第三页!

我不确定为什么某些类(特别是分页会给用户带来这么多麻烦?)如果我需要支付一些费用(可能是隐藏的许可证?)以摆脱麻烦,而不是使用简单的分页类而不浪费太多时间在网上搜索问题,我准备好了!

【问题讨论】:

  • +1 我对这个问题投了赞成票 这是个好问题,我不知道为什么会有人投反对票。

标签: php codeigniter activerecord pagination


【解决方案1】:

因为这个分页问题我很生气,我在研究分页库的源代码时看到了这个——var $uri_segment = 3;分页库的默认值使用第 3 个 uri 段,在您的情况下,在我的情况下,我们想使用第 4 个 uri 段。为了满足我们的需要,更改此代码:

    $config['base_url'] = site_url('admin/index/page/');
    $this->load->database();
    $config['total_rows'] = $this->db->count_all('sms');
    $config['per_page'] = 20;
    $offset = $this->uri->segment(4, 0);
    $this->pagination->initialize($config)


   TO


    $config['base_url'] = site_url('admin/index/page/');
    $this->load->database();
    $config['total_rows'] = $this->db->count_all('sms');
    $config['per_page'] = 20;
    $offset = $this->uri->segment(4, 0);

    $config['uri_segment'] = 4;      // add this line to override the default

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

如果这能解决您的问题或问题仍然存在,请在此处回复,以便我提供帮助:)

Nwei 这不在分页类文档中。我希望这将被添加到文档中,因为我看到许多开发人员在使用分页类时遇到了困难。

【讨论】:

  • 非常感谢它解决了这个问题!顺便说一句,如果你使用 Ci 请注意官方文档...
【解决方案2】:

如果您熟悉分页的工作原理,那么您应该知道分页不会将链接标签添加到当前页面。因此,我不确定您在“分页类不创建 1 页链接”方面要问什么。

另外,我看不到您在分页功能中使用的偏移量。好像你设置了它,但你不使用它。这可能会导致不正确的分页结果,我认为这就是您获得比预期更多的分页链接的原因。

    $offset = $this->uri->segment(4, 0);
    $this->pagination->initialize($config);

更改“当前页面”链接标记的一种方法是“自定义“当前页面”链接”

$config['cur_tag_open'] = '<a href="#">';

“当前”链接的开始标签。

$config['cur_tag_close'] = '</a>';

“当前”链接的结束标记。

另一种选择是深入分页类并删除它具有的不添加到当前页面的链接的功能。

真的,如果您在当前页面上,链接到您已经在其上的同一页面并没有任何好处,我假设这是当前页面没有链接的原因。如果您转到第 2 页,则第 2 页将被禁用。希望这有点道理。

【讨论】:

    【解决方案3】:

    不,不需要支付任何费用......CI分页完美运行..你看到这个库http://codeigniter.com/user_guide/libraries/pagination.html

    确保您的 $config['total_rows'] = $this-&gt;db-&gt;count_all('sms'); 此代码工作正常并提供正确的行数,而且我建议使用 ..$config['uri_segment'] = 3;$config['uri_segment'] = 4; depend on your uri 而不是使用 $offset = $this-&gt;uri-&gt;segment(4, 0);

    这些改变对你有用....

    【讨论】:

    • 我已经试过segment了,segment或者count table都没有问题。我的问题是,分页类不创建 1 页链接。我想我写得很明显。而且我认为这与计数 ($rows) 无关。
    • 您确定您的“site_url()”辅助函数工作正常吗?我也怀疑 uri_segment 问题,因为这是最常见的。我会仔细检查你的计数并确保它有效。如果不是,它就不会返回第 2 页和第 3 页。
    • 即使 sql 结果也不能正常工作,每个页面的 sql 结果都是一样的。由于文档和 CI 社区薄弱,我想我会使用另一个 MVC ...
    【解决方案4】:

    我在使用段号 4 时也遇到了同样的分页问题。我通过使用段号 3 解决了它。这也是我的问题,因为我确实需要使用段号 4 但是哦,它有错误。我希望这可以尽快解决。或者如果你现在真的需要解决这个问题,你可以尝试 fork 分页类的源代码。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2012-04-16
      • 1970-01-01
      • 2018-05-05
      • 2016-05-26
      • 2012-05-14
      • 2012-02-20
      • 2012-02-14
      • 2014-02-03
      相关资源
      最近更新 更多