简单的用树枝分页

时间:2017-05-27 16:45:53

标签: php loops pagination twig

我试图用树枝视图创建一个简单的分页。 我没有使用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>

它现在正在工作!

谢谢!

1 个答案:

答案 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 %}