CodeIgniter分页配置,而不在不同的控制器中重复


CodeIgniter pagination config without repeating within different Controllers

我对一些混乱的代码没有什么问题,我认为它可以更好,我使用分页类来显示页面,我唯一的问题是我想让它与众不同?现在我的控制器中有一些功能?

public function products 
{
        $config["per_page"] = 4;
        $config["uri_segment"] = 2;
        $config['cur_tag_open'] = '<li><span class="page active">';
        $config['cur_tag_close'] = '</span></li>';
        $config['num_tag_open'] = '<li class="page gradient">';
        $config['num_tag_close'] = '</li>';
        $config['prev_link'] = '&lt; prev';
        $config['prev_tag_open'] = ' <li class="page gradient">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = 'next &gt;';
        $config['next_tag_open'] = '<li class="page gradient">';
        $config['next_tag_close'] = '</li>'
}

和其他同样的

public function milks
{
        $config["per_page"] = 4;
        $config["uri_segment"] = 2;
        $config['cur_tag_open'] = '<li><span class="page active">';
        $config['cur_tag_close'] = '</span></li>';
        $config['num_tag_open'] = '<li class="page gradient">';
        $config['num_tag_close'] = '</li>';
        $config['prev_link'] = '&lt; prev';
        $config['prev_tag_open'] = ' <li class="page gradient">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = 'next &gt;';
        $config['next_tag_open'] = '<li class="page gradient">';
        $config['next_tag_close'] = '</li>'
}

你看到有一样的吗?但我用了两次,每次分页时,我都必须在该函数中放入配置,是否可以像一样以全局方式对其进行样式设置

    function __construct()
    {
        $config["per_page"] = 4;
        $config["uri_segment"] = 2;
        $config['cur_tag_open'] = '<li><span class="page active">';
        $config['cur_tag_close'] = '</span></li>';
        $config['num_tag_open'] = '<li class="page gradient">';
        $config['num_tag_close'] = '</li>';
        $config['prev_link'] = '&lt; prev';
        $config['prev_tag_open'] = ' <li class="page gradient">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = 'next &gt;';
        $config['next_tag_open'] = '<li class="page gradient">';
        $config['next_tag_close'] = '</li>';
}

我在应用程序中使用的所有其他分页都使用相同的样式,而不是逐个函数重复?

问候

有可能以全球的方式来设计它吗?

是的。

更新

来自CodeIgniter用户指南:

如果您不想使用上述方法设置首选项,可以将它们放入配置文件中。只需创建一个名为pagination.php的新文件,并在该文件中添加$config数组。然后将文件保存在:config/pagination.php中,它将自动使用。如果将首选项保存在配置文件中,则NOT需要使用$this->pagination->initialize函数。

老答案

创建一个语言文件(或配置文件,您可以选择),并将分页配置放入:

例如:./application/language/english/pagination_lang.php:

$lang['pagination_conf'] = array(
    'full_tag_open'   => "<ul>",
    'full_tag_close'  => "</ul>",
    'first_link'      => "First",
    'first_tag_open'  => "<li>",
    'first_tag_close' => "</li>",
    'last_link'       => "Last",
    'last_tag_open'   => "<li>",
    'last_tag_close'  => "</li>"/*,
    And so on... */
);

然后将语言文件加载到控制器中,并将值传递给配置数组:

$this->lang->load('pagination');
$config = $this->lang->line('pagination_conf');

在这种情况下,一旦更改了源文件,所有内容都将更改。

如果您使用配置文件,您可以将值存储在一个数组中,并且您将能够设置多个分页配置:

配置文件:./application/config/pagination_conf.php:

$config['pagination_conf'] = array(
    'case1' => array(
        'full_tag_open'  => '...',
        'full_tag_close' => '...',
        'first_link'     => '...'
        // So on...
    ),
    'case2' => array(
        'full_tag_open'  => '...',
        'full_tag_close' => '...',
        'first_link'     => '...'
        // So on...
    )
);

您可以通过以下方式访问case1配置:

$this->config->load('pagination_conf', TRUE);
$config = $this->config->item('case1', 'pagination_conf');

将配置文件放入名为config/pagination.php的文件中;它将是全局