spiriitlabs / form-filter-bundle
此包旨在提供构建一些表单筛选器的类,然后从这些表单筛选器构建 doctrine 查询。
v11.0.4
2024-09-20 07:50 UTC
Requires
- php: ^8.1
- doctrine/dbal: ^3.0
- doctrine/orm: ^3.0
- symfony/form: ^5.4|^6.4|^7.0
- symfony/framework-bundle: ^5.4|^6.4|^7.0
Requires (Dev)
- doctrine/annotations: ^2.0
- doctrine/doctrine-bundle: ^1.8 || ^2.0
- rector/rector: ^0.17.1
- symfony/phpunit-bridge: ^5.4|^6.4|^7.0
- symfony/var-dumper: ^5.4|^6.4|^7.0
- symplify/easy-coding-standard: ^11.3
- dev-master
- v11.0.4
- v11.0.3
- v11.0.2
- v11.0.1
- v11.0.0
- v10.0.2
- v10.0.1
- 10.0.0.x-dev
- v10.0.0
- v9.0.2
- v9.0.1
- v9.0.0
- v8.0.1
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.5
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v5.0.10
- v5.0.9
- v5.0.8
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- v0.0.3
- dev-licence
This package is auto-updated.
Last update: 2024-09-20 07:58:59 UTC
README
LexikFormFilterBundle,一个历史性包,现已更名为SpiriitFormFilterBundle。代码保持不变;只是在GitHub上的名称和组织发生了变化。
此 Symfony 包旨在提供构建一些专用表单类型的类,以筛选实体。创建您的表单类型后,您将能够从表单类型更新 doctrine 查询构建器的条件。
想法是
- 创建一个继承自
Symfony\Component\Form\AbstractType
的表单类型,就像通常一样。 - 通过使用提供的筛选类型(例如,使用 TextFilterType::class 而不是 TextType::class 类型)添加表单字段 (*)。
- 然后调用服务从表单实例构建查询并执行查询以获取结果 :)
(*):实际上您可以使用任何类型,但如果您想不使用 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
社区支持
请考虑在 StackOverflow 上提出问题,使用 spiriitformfilterbundle
标签,这是此包的官方支持平台。
Github 问题仅用于错误报告和功能请求。
对于与 Symfony 2.8 和 3.4 的兼容性
请使用最后一个标签 v5.*
致谢
- Spiriit dev@spiriit.com
- 所有贡献者
许可证
此包受 MIT 许可证的保护。
有关完整版权信息,请参阅与此源代码一起分发的 LICENSE 文件。