如何获得结果的数量? - Pagerfanta和Twig(在Symfony)

时间:2018-04-14 14:04:11

标签: symfony pagerfanta

在我的演示应用程序中,使用Pagerfanta只读取数据库中的几行。

public function findAllProductsByCategory($category, int $page = 1): Pagerfanta
{
    // DQL = Always select full classes from classes
    $query = $this->getEntityManager()
        ->createQuery('
             SELECT   p
             FROM     App\Entity\Product p
             WHERE    p.category = :category
        ')
        ->setParameter('category', $category);

    return $this->createPaginator($query, $page);
}

稍后在Twig中,我循环预选结果。一切都很好......

    {% if products.haveToPaginate %}
        <div class="navigation text-center">
            {{ pagerfanta(products, 'default', {routeName: 'category_show_paginated', 'routeParams' : { 'id': category.id}}) }}
        </div>
    {% endif %}
    <table border="1" cellpadding="5">
        <tr>
            <th>#</th>
            <th>Name</th>
            <th>Products</th>
            <th>Description</th>
        </tr>
        {% for product in products %}
        <tr>
            <td>{{ loop.index }}</td>
            <td><a href="{{ path('products_show', {id: product.id}) }}">{{ product.name }}</a></td>
            <td>{{ product.description }}</td>
        </tr>
        {% endfor %}
    </table>

但在每个页面上,&#34; loop.index&#34;是1,2,3,4相同... 我想用pagerfanta显示结果数41,42,43 ...)

有特殊功能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

暂时没有与Pagerfanta合作过,但你想要的东西应该是这样的:

{{ pagerfanta.currentPageOffsetStart() + loop.index }}

示例测试用例:https://hotexamples.com/examples/pagerfanta/Pagerfanta/getCurrentPageOffsetStart/php-pagerfanta-getcurrentpageoffsetstart-method-examples.html