php - 如何在 Twig 视图中使用 Codeigniter 分页?
问题描述
我正在使用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 }}
推荐阅读
- java - 从过滤器迁移到拦截器会导致 403 错误
- r - 一种更有效的填充矩阵的方法
- java - Api Call 在 Postman 中工作,但在 Java 中使用 OKHTTP(返回 ec:400)
- c# - 添加相机视图后绘制的对象丢失
- sql-server - 使用 sp_send_dbmail 时电子邮件中的格式问题
- python - Python模块失败
- angular - 在 ngFor 中创建组件时,Angular ngOnInit 从未执行
- javascript - Intersection Observer 类似于 api 的固定点
- javascript - JavaScript 在 ASP .Net MVC 实体框架中不起作用
- php - 使用 Woocommerce 挂钩从匹配的订单项元值中显示选定的 BACS 帐户