zerkalica/millwright-filter-bundle

此软件包最新版本(dev-master)没有可用的许可证信息。

Millwright 过滤器组件包:将 KnpPaginatorBundle 和 LexikFormFilterBundle 结合在一起

dev-master 2012-10-19 21:21 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:14:16 UTC


README

将 KnpPaginatorBundle 和 LexikFormFilterBundle 结合在一起。

  • 注入服务 @millwright_filter.paginator

  • 使用 PaginatorInterface $paginator;

  • 使用 $this->paginator->paginate($builder, 'users', $form);

  • builder - QueryBuilder 或用于分页的东西

  • 'user' - 分页参数和查询构建器命名空间

  • form - 过滤表单,请参阅 LexikFormFilterBundle

服务

millwright_filter.registry 用于存储查询参数(请参阅 OptionsRegistryInterface)

Twig 函数

用于在 get 参数中保存分页器和过滤器状态。

options_registry(exclude_namespace, overrides) - 返回数组,用于在过滤表单和分页器之间共享查询参数

{% beginmacro form(form, attributes) %}
    <form {{ form_enctype(form) }} {{ _self.attributes(attributes) }} novalidate>
    {{ form_widget(form) }}
    {#
        options_registry(form.vars.name) - build http query with all stored parameters, except this form
    #}
    {% for key, value in options_registry(form.vars.name) %}
        <input name="{{ key }}" value="{{ value }}" type="hidden" />
    {% endfor %}
    </form>
{% endmacro form %}

options_query(overrides, exlude_namespace) - 返回字符串,构建 HTTP 查询,用于链接(分页器、过滤器状态)

<a href="?{{ options_query({current: next}) }}">Prev</a>
<a href="?{{ options_query({current: prev}) }}">Next</a>

在控制器中

    /** @var $options \Millwright\Util\Request\OptionRegistryInterface */
    $options = $this->get('millwright_filter.registry');
    $options->addOption('current', $currentDate->format(DateUtil::SQL_DATE));

    return array('next' => 'next week', 'prev' => 'prev week', 'paginator' => $paginator, 'filter' => $form);