繁体   English   中英

如何在 Twig 视图中使用 Codeigniter 分页?

[英]How can I use Codeigniter pagination inside Twig views?

我正在使用CodeIgniter 3.1.8和 Bootstrap 4 开发在线报纸/博客应用程序。我决定向其中添加主题。 该应用程序不是 HMVC ,只有 MVC 。

我认为使用Twig模板引擎添加主题是个好主意。 为此,我使用CodeIgniter Simple and Secure Twig

主题模板的扩展名为.twig ,而不是.php

Posts 控制器的这部分负责显示带有分页的帖子:

private function _initPagination($path, $totalRows, $query_string_segment = 'page') {
    //load and configure pagination 
    $this->load->library('pagination');
    $config['base_url'] = base_url($path);
    $config['query_string_segment'] = $query_string_segment; 
    $config['enable_query_strings'] =TRUE;
    $config['reuse_query_string'] =TRUE;
    $config['total_rows'] = $totalRows;
    $config['per_page'] = 12;
    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) {
        $_GET[$config['query_string_segment']] = 1;
    }
    $this->pagination->initialize($config);

    $limit = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;

    return ['limit' => $limit, 'offset' => $offset];
}

public function index() {

      //call initialization method
    $config = $this->_initPagination("/", $this->Posts_model->get_num_rows());

    $data = $this->Static_model->get_static_data();
    $data['base_url'] = base_url("/");
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories();  

      //use limit and offset returned by _initPaginator method
    $data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);

    $this->twig->addGlobal('siteTitle', 'My Awesome Site');
    $this->twig->addGlobal('maincss', base_url('themes/caminar/assets/css/main.css'));
    $this->twig->display('themes/caminar/layout', $data);
} 

如果我有经典的 codeigniter 视图,我会以这种方式在页面上显示分页(我已经在项目的先前版本中这样做了):

<div class="pagination-container text-center">
   <?php echo $this->pagination->create_links(); ?>
</div>

但我现在需要一种方法将分页传递给 Twig 视图。 添加上面的代码不起作用,我还没有找到可行的替代方案。

在您的控制器中,只需将这些链接的显示添加为变量,然后在视图中正常显示即可。

就像是:

// Controller
$this->twig->addGlobal('pagination', $this->pagination->create_links());

// View

{{ pagination|raw }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM