我试图用树枝视图创建一个简单的分页。 我没有使用Symfony。
这是我经理的方法:
public function getAllPosts()
{
if(isset($_GET['p']) && (!isset($_GET['page']))){
$currentPage = 1;
}
else {
$currentPage = $_GET['page'];
}
$q= $this->_db->query('SELECT COUNT(id) AS numberposts FROM posts');
$data = $q->fetch(PDO::FETCH_ASSOC);
$number_posts= $data['numberposts'];
$perPage = 1;
$numberPages = ceil($number_posts/$perPage);
$q = $this->_db->query("SELECT * FROM posts ORDER BY date DESC LIMIT ".(($currentPage-1)*$perPage).",$perPage");
while($data = $q->fetch(PDO::FETCH_ASSOC))
{
$datas[] = new Post($data);
}
return $datas;
}
我想在我的视图中创建一个循环,这就是我正在做的事情
{% for posts in allPosts %}
{% for i in 1..numberPages %}
<a href="index.php?p=blog&page={{ i }}">{{ i }}</a>
{% endfor %}
{% endfor %}
但它没有用。好像我无法访问numberPages而且我不知道为什么。
如果有人可以帮助我!
非常感谢
修改
我的分页现在正在运作。
我的方法就像@darkbee:
return array(
'records' => $datas,
'numberPages' => $numberPages,
);
在我看来:
{% for i in 1.. allPosts.numberPages %}
<li><a href="index.php?p=blog&page{{ loop.index }}">{{ loop.index}}</a></li>
{% endfor %}
但现在我有另一个问题。我只在所有页面中获得相同的帖子。
修改
我在页面链接上忘记了页面=
<li><a href="index.php?p=blog&page={{ loop.index }}">{{ loop.index}}</a></li>
它现在正在工作!
谢谢!
答案 0 :(得分:2)
您还需要返回页数。 一个方法可能是这个,
public function getAllPosts() {
/** ... code .. **/
return array(
'records' => $data,
'numberPages' => $numberPages,
);
}
{% for posts in allPosts.records %}
{% for i in 1.. allPosts.numberPages %}
<a href="index.php?p=blog&page={{ i }}">{{ i }}</a>
{% endfor %}
{% endfor %}