CodeIgniter:如何覆盖控制器代码中的分页配置?

时间:2012-08-02 14:55:59

标签: codeigniter pagination

我最近跳过了CodeIgniter列车,因为我最终想要为我不断增长的PHP / MySQL项目采用MVC架构。 现在我遇到了一个probolemin,就我所能看到的那种显然没有描述的PAgination configuratino。

可能问题不在于PAgination只是相关而是更一般。在我的第一次尝试中,我只是在控制器方法中填充了配置并将其传递给initialize()方法:

$config['base_url'] = $this->config->base_url() .  "/categorie/{$catName}/";
$config['total_rows'] =      $this->event_model->get_nrofevents_for_categorie($categorieObject->id, TRUE);
$config['per_page'] = 12;
$config['full_tag_open'] = '<div class="paging">';
$config['full_Tag_close'] = '</div>';
$config['prev_link'] = 'Vorige';
$config['next_link'] = 'Volgende';
$this->pagination->initialize($config);

这很好用。但我有一些其他页面使用相同的分页,其大多数参数相同,只有base_url和total_rows配置属性对于每个页面是不同的。 我已将公共配置放在config / pagination.php配置文件中,但没有看到在代码中添加依赖于页面的属性的选项。 更一般的是,是否可以将通用配置放在配置文件中并在控制器方法中添加一些自定义属性? 对我来说这似乎合乎逻辑,但无法弄清楚如何...... 我试过像:

$this->load->config('pagination');
$this->config->set_item('next_link', 'blablabla');

但似乎在读取配置文件后立即初始化分页,此代码无效。 请提出任何建议吗?

2 个答案:

答案 0 :(得分:6)

由于initialize()仅替换了您提供的密钥,因此您可以让config/pagination.php保留默认值,并使用更改的密钥调用initialize()

配置/ pagination.php

 // put default values here
 $config['next_link'] = 'Volgende';
 $config['prev_link'] = 'Vorige';
 // ...

控制器

 $this->pagination->initialize(array(
     'base_url' => base_url().'categorie/'.$catName.'/',
     'total_rows' => $totalRows,
      // ...
 )));

答案 1 :(得分:0)

不要使用base_url()...我总是使用site_url();

$config['base_url'] = site_url('');