spiriitlabs/form-filter-bundle

此包旨在提供构建一些表单筛选器的类,然后从这些表单筛选器构建 doctrine 查询。

安装次数: 149,208

依赖关系: 5

建议者: 1

安全性: 0

星级: 21

关注者: 2

分支: 12

类型:symfony-bundle


README

LexikFormFilterBundle,一个历史性包,现已更名为SpiriitFormFilterBundle。代码保持不变;只是在GitHub上的名称和组织发生了变化。

此 Symfony 包旨在提供构建一些专用表单类型的类,以筛选实体。创建您的表单类型后,您将能够从表单类型更新 doctrine 查询构建器的条件。

PHP Version Packagist Downloads Latest Stable Version CI Tests

想法是

  1. 创建一个继承自 Symfony\Component\Form\AbstractType 的表单类型,就像通常一样。
  2. 通过使用提供的筛选类型(例如,使用 TextFilterType::class 而不是 TextType::class 类型)添加表单字段 (*)。
  3. 然后调用服务从表单实例构建查询并执行查询以获取结果 :)

(*):实际上您可以使用任何类型,但如果您想不使用 XxxFilterType::class 类型应用筛选器,您将不得不创建一个自定义监听器类来为此类型应用筛选器。

安装

================

可以使用 Composer 或 Symfony 二进制文件 安装此包。

composer require spiriitlabs/form-filter-bundle

分两步使用

创建表单

<?php
namespace Project\Form\Filter;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Spiriit\Bundle\FormFilterBundle\Filter\Form\Type as Filters;

class RankFilterType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', Filters\TextFilterType::class);
        $builder->add('rank', Filters\NumberFilterType::class);
    }
}

在控制器中使用它

class DefaultController extends AbstractController
{
    public function __invoke(
    Request $request, 
    FormFactoryInterface $formFactory,
    EntityManagerInterface $em,
    FilterBuilderUpdater $filterBuilderUpdater
    ): Response
    {
        $form = $formFactory->create(RankFilterType::class);

        $form->handleRequest($request);

        $filterBuilder = $em
            ->getRepository(MyEntity::class)
            ->createQueryBuilder('e');

        $filterBuilderUpdater->addFilterConditions($form, $filterBuilder);

        // now look at the DQL =)
        dump($filterBuilder->getDql());

        return $this->render('testFilter.html.twig', [
            'form' => $form,
        ]);
    }
}

文档

此 Symfony 包与 Symfony 4.3 或更高版本兼容。

对于 Symfony 2.8/3.4,请使用标签 v5.*

有关安装和使用此包的说明,请参阅 Resources/doc/index.md

  1. 安装
  2. 配置
  3. 提供的表单类型
  4. 示例 & 内部机制
    1. 简单示例
    2. 内部机制
  5. 使用筛选器
    1. 自定义条件运算符
    2. 筛选器自定义
    3. 使用实体关联和内嵌筛选器
    4. Doctrine 内嵌
    5. 创建您自己的筛选器类型
    6. 在筛选器类型上启用验证
  6. 筛选器类型扩展
  7. 与其他包一起工作
    1. KNP Paginator 示例
  8. 实际用例 - 与 PagerFanta 的高级使用

社区支持

请考虑在 StackOverflow 上提出问题,使用 spiriitformfilterbundle 标签,这是此包的官方支持平台。

Github 问题仅用于错误报告和功能请求。

对于与 Symfony 2.8 和 3.4 的兼容性

请使用最后一个标签 v5.*

致谢

许可证

此包受 MIT 许可证的保护。
有关完整版权信息,请参阅与此源代码一起分发的 LICENSE 文件。