Неизвестная функция пейджерфанта

Я использую пакет Pagerfanta с Symfony 3.3.4 и Bootstrap 3;

    "php": ">=5.5.9",
    "components/jquery": "^3.2",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "incenteev/composer-parameter-handler": "^2.0",
    "kriswallsmith/assetic": "^1.4",
    "oyejorge/less.php": "v1.7.0.14",
    "sensio/distribution-bundle": "^5.0.19",
    "sensio/framework-extra-bundle": "^3.0.2",
    "symfony/assetic-bundle": "^2.8",
    "symfony/monolog-bundle": "^3.1.0",
    "symfony/polyfill-apcu": "^1.0",
    "symfony/swiftmailer-bundle": "^2.3.10",
    "symfony/symfony": "3.3.*",
    "twig/twig": "^1.0||^2.0",
    "twitter/bootstrap": "^3.3",
    "white-october/pagerfanta-bundle": "^1.0"

Затем у меня есть шаблон внутри моего AppBundle, который расширяет base.html.twig:

{% extends 'base.html.twig' %}

{% block body %}
    <nav class="navbar navbar-inverse navbar-fixed-top">

...

    {% block content %}{% endblock %}

{% endblock %}

который, в свою очередь, расширяется шаблоном страницы:

{% extends '@AppBundle/index.html.twig' %}

{% block submenu %}
    <a href="{{ path('site_new') }}" class="btn btn-success"><i class="fa fa-plus"></i> Create</a>
{% endblock %}
{% block title %}
    Manage Sites
{% endblock %}
{% block body %}

    {{ pagerfanta(pager, 'twitter_bootstrap3') }}

{% endblock %}

Вызов шаблона с

    $adapter = new DoctrineORMAdapter($qb);
    $pager = new Pagerfanta($adapter);
    $pager->setMaxPerPage(20);
    $pager->setCurrentPage(intval($this->getSessionPage()));

    $data = $pager->getCurrentPageResults();
    return $this->render('@AppBundle/site/index.html.twig', [
        'pager' => $pager,
        'data' => $data,
        'order' => $order,
        'form' => $form->createView()
    ]);   

Однако я получаю

Unknown "pagerfanta" function.

Exception: Twig_Error_Syntax

Как будто эта функция Twig не была включена, но я не вижу, что еще мне нужно включить. Pagerfanta также находится в моем AppKernel.php


person jdog    schedule 13.07.2017    source источник
comment
Я не уверен, вы уже привязали это или нет, но вы очистили кеш? Используя: php bin/console cache:clear --no-warmup --env=prod или даже rm -Rf var/cache Я думаю, вы могли что-то изменить, но не очистили кеш.   -  person Alvin Bunk    schedule 13.07.2017
comment
Да почистил кеш   -  person jdog    schedule 13.07.2017
comment
Это может быть очевидно, и я не совсем знаком с этим, но действительно ли вы создали свой объект Pagerfanta и зарегистрировали его в своем шаблоне?   -  person Kdawg    schedule 17.07.2017
comment
Нет, это расширение ветки, я не должен заниматься этой беготней.   -  person jdog    schedule 17.07.2017
comment
Уверены ли вы? Ссылка на документацию в ответе svgrafov предполагает обратное: во-первых, вам нужно передать экземпляр Pagerfanta в качестве параметра в ваш шаблон... Затем вы вызываете расширение Pagerfanta Twig, передавая экземпляр Pagerfanta. Каково значение $pager в вашем коде?   -  person Kdawg    schedule 17.07.2017
comment
Пожалуйста, не могли бы вы показать нам эту часть, где WhiteOctoberPagerfantaBundle добавляется к AppKernel.php?   -  person yceruto    schedule 17.07.2017
comment
@yceruto, дох, не добавил, хотя я так и думал. Пожалуйста, добавьте ответ, чтобы я мог его принять   -  person jdog    schedule 17.07.2017


Ответы (2)


Похоже, вы забыли добавить WhiteOctoberPagerfantaBundle к AppKernel.php, в результате чего PagerfantaExtension не загружается, поэтому функция {{ pagerfanta() }} не определена.

$bundles = array(
    // ...
    new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
);
person yceruto    schedule 17.07.2017

Я предполагаю, что у вас есть опечатка где-то рядом с рендерингом этого шаблона. Добавьте код рендеринга в свой вопрос, он должен быть таким.

https://github.com/whiteoctober/WhiteOctoberPagerfantaBundle#rendering-pagerfantas

$adapter = new DoctrineORMAdapter($queryBuilder);
$pagerfanta = new Pagerfanta($adapter);
    return $this->render('@YourApp/Main/example.html.twig', [
    'my_pager' => $pagerfanta,
]);
person svgrafov    schedule 13.07.2017