加载更多功能symfony 2.8

时间:2017-07-07 15:13:57

标签: php jquery ajax symfony twig

所以,我有一个名为Task.php的实体,我可以从中获取数据库中的所有聊天消息并在当前页面上呈现。这是我如何在实体中获得它们:

/**
 * @return \Doctrine\Common\Collections\Collection|static
 */
public function getDisplayedActivity()
{
    $limit = 15;
    $criteria = Criteria::create();
    $criteria->orderBy(['createdAt' => 'DESC']);
    $criteria->setMaxResults($limit);
    $criteria->where(Criteria::expr()->isNull('parent'));
    return $this->activity->matching($criteria);
}

我在twig文件中渲染它们后,像这样:

{% for a in displayedActivity %}
...
{% endfor %}

现在有限制 - 页面上只显示15条消息。 我需要按钮"加载更多"每次我按下它时,将在消息块的末尾加载另外15个按摩。但我不知道该怎么做。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将setMaxResultssetFirstResult结合使用,例如:

$start = 0;
$limit = 15;
$criteria = Criteria::create();
$criteria->orderBy(['createdAt' => 'DESC']);
$criteria->setFirstResult($start);
$criteria->setMaxResults($limit);
$criteria->where(Criteria::expr()->isNull('parent'));
return $this->activity->matching($criteria);

通过这种方式,您可以从记录0到15

如果您想将记录从30改为45,则需要将start变量更改为30。

因此,如果您需要分页,可以传递pageNumber,例如page = 1

$page = 1;
$limit = 15;
$start = ($page * limit) - $limit;
$criteria = Criteria::create();
$criteria->orderBy(['createdAt' => 'DESC']);
$criteria->setFirstResult($start);
$criteria->setMaxResults($limit);
return $this->activity->matching($criteria);