CodeIgniter 中分页的自动加载配置不起作用

Posted

技术标签:

【中文标题】CodeIgniter 中分页的自动加载配置不起作用【英文标题】:Autoload Config for Pagination in CodeIgniter not working 【发布时间】:2011-03-19 23:43:11 【问题描述】:

我正在尝试在我的 CI webapp 中实现分页。现在我将分页配置放在这样的配置文件中......

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['base_url'] = "http://example.com/index.php/home/index";
$config['num_links'] = "9";
$config['per_page'] = "20";
$config['total_rows'] = "200";

/* End of file pagination.php */
/* Location: ./system/application/config/pagination.php */

在我的控制器中,我已经加载了库

$this->load->library("pagination");

我已经在 config/autoload.php 中定义了自动加载的分页配置文件

$autoload['config'] = array('pagination');

最后我调用了在我的视图模板中创建链接的方法:

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

这没有创建任何链接。配置正在正确地自动加载。我检查使用...

<?php echo $this->config->item("num_links"); ?> <!-- this dislayed 9 -->

我在这里缺少什么?只是为了记录,将配置放入控制器中也不起作用。

更新 #1- 我发现配置设置正在正确加载,但它们没有到达库或类似的东西。在分页库中 - 我做了一些硬编码以发现 per_page 参数在那里为零。

更新 #2- 当我说将配置内联不起作用时,我错了。它工作正常。自动加载不起作用。

问候

【问题讨论】:

【参考方案1】:

终于用这段代码解决了我的问题……

$this->config->load("pagination");
$page_limit = $this->config->item("per_page");
$config['total_rows'] = $var; // Some variable count
$this->pagination->initialize($config);

这让我可以在文件中定义配置项,并在控制器中初始化我想要的项目,就像我的情况一样,总数。行数 - 从数据库中检索。

问候

【讨论】:

【参考方案2】:

您的配置文件中的自动加载行应该是这样的

$autoload['libraries'] = array('pagination');

并且在你使用 create_links() 等之前,你必须在你的配置数组之后在你的控制器中有这一行。

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

【讨论】:

+1 虽然您忽略了 OP 不需要自动加载和手动加载分页类 $autoload['libraries'] = array('pagination'); 不会自动加载我创建的配置文件。我将自动加载库 AFAIK。 在较新版本的 CI 中,initialize() 方法将分页重置为默认值,并且仅覆盖 $config 数组。在这种情况下,pagination.php 文件将被完全忽略。对我来说毫无意义,但现在就是这样。

以上是关于CodeIgniter 中分页的自动加载配置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

angularjs中分页的应用

Jquery 选择器在引导模式下不起作用(使用 codeigniter 加载表单)

我的自动完成功能在 codeigniter 中不起作用

在 CodeIgniter 中调用一组配置项

动态自定义过滤器在 codeigniter 中不起作用