swoopaholic / pagerfanta-bridge
Swoopaholic Pagerfanta Bridge
1.0.1
2015-09-22 11:56 UTC
Requires
- php: >=5.3.3
- pagerfanta/pagerfanta: 1.0.*
This package is not auto-updated.
Last update: 2024-09-28 16:17:34 UTC
README
这个小型库旨在去除对Pagerfanta包及其twig扩展的依赖。通过使用视图,您可以创建一个模板来渲染分页器。
用法
只需下载库并将其用于您的symfony2项目控制器中
/** * Lists all entities. * * @Route("/", name="my_entities") * @Method("GET") * @Template() */ public function indexAction(Request $request) { $qb = $this->getDoctrine()->getManager()->createQueryBuilder('MyBundle:MyEntity'); $adapter = new \Pagerfanta\Adapter\DoctrineORMAdapter($qb); $pager = new \Swoopaholic\Bridge\Pagerfanta\Pagerfanta($adapter); $pager->setCurrentPage($request->get('page', 1)); $pager->setMaxPerPage(50); return array( 'entities' => $pager->getData(), 'pagerfanta' => $pager->createView(), );
创建用于渲染分页器的宏模板
{% block page_first %}
<li{% if pager.currentPage <= 1 %} class="disabled"{% endif %}><a href="{{ pager.first }}">«</a></li>
{% endblock %}
{% block page_last %}
<li{% if pager.currentPage >= pager.pages|length %} class="disabled"{% endif %}><a href="{{ pager.last }}">»</a></li>
{% endblock %}
{% block page_prev %}
<li{% if pager.currentPage <= 1 %} class="disabled"{% endif %}><a href="{{ pager.prev }}">←</a></li>
{% endblock %}
{% block page_next %}
<li{% if pager.currentPage >= pager.pages|length %} class="disabled"{% endif %}><a href="{{ pager.next }}">→</a></li>
{% endblock %}
{% block page_link %}
<li{% if active %} class="active"{% endif %}><a href="{{ item.url }}">{{ item.content }}</a></li>
{% endblock %}
{% macro pager(pager) %}
{% if pager.count > 1 %}
<ul class="pagination">
{{ block('page_first') }}
{{ block('page_prev') }}
{% for number,page in pager.pages %}
{% set item = {'url': page, 'content': number} %}
{% set active = number == pager.currentPage %}
{{ block('page_link') }}
{% endfor %}
{{ block('page_next') }}
{{ block('page_last') }}
</ul>
{% endif %}
{% endmacro %}
在模板中使用视图('pagerfanta')中的'macro' 'pager'非常简单
{% import 'MyLayoutTemplatesBundle:Navigation:pager.html.twig' as pager %}
...
{{ pager.pager(pagerfanta) }}
许可协议
此包根据MIT许可协议发布。请参阅包中的完整许可协议。
LICENSE