ongr / filter-manager-bundle
产品列表的过滤器管理包
Requires
- php: ^7.0 || ^8.0
- jms/serializer-bundle: ^2.4|^3.0
- ongr/elasticsearch-bundle: ^6.0|^7.0|dev-master
- symfony/asset: ^3.4|^4.0|^5.0|^6.0
- symfony/browser-kit: ^3.4|^4.0|^5.4|^6.0
- symfony/css-selector: ^3.4|^4.0|^5.0|^6.0
- symfony/translation: ^3.4|^4.0|^5.0|^6.0
- symfony/twig-bundle: ^3.4|^4.0|^5.0|^6.0
- twig/twig: ^2
Requires (Dev)
- monolog/monolog: ~1.0
- phpunit/phpunit: ~5.0
- satooshi/php-coveralls: ~1.0
- squizlabs/php_codesniffer: ~2.4
This package is auto-updated.
Last update: 2024-08-29 04:12:38 UTC
README
过滤器管理用于列出文档。它提供了常用过滤选项和UI元素与Elasticsearch存储之间的联系。重要的是要提到,过滤对列表有影响的一切,它可以是
- 针对特定字段值对象的过滤(颜色、国家等)
- 范围过滤(价格范围、从点的距离等)
- 文档列表分页。分页会改变列表的表示,因此它被认为是一种过滤,并被视为一种过滤。
- 文档列表排序。与分页相同 - 在此包中,排序是一种过滤。
- 任何影响结果列表的因素(不一定是直接可见的)。它可以排除、提高某些结果,修改某些结果,收集一些度量或任何您可以想象到的其他操作。
如果您需要任何帮助,请在Stack Overflow上提问,这是首选和推荐的方式询问ONGR支持问题。
文档
有关此包的在线文档,请点击此处。所有文档页面都位于Resources/doc/
中。
安装
步骤 1:安装FilterManager包
FilterManager包使用Composer安装。
# You can require any version you need, check the latest stable to make sure you are using the newest version. $ composer require ongr/filter-manager-bundle "~3.0"
请注意,过滤器管理需要Elasticsearch包,有关如何安装和配置它的指南可以在此处找到。
步骤 2:启用FilterManager包
在您的AppKernel中启用Filter Manager包
// config/bundles.php <?php return [ ... ONGR\ElasticsearchBundle\ONGRElasticsearchBundle::class => ['all' => true], ONGR\FilterManagerBundle\ONGRFilterManagerBundle::class => ['all' => true], JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true], ... ];
步骤 3:添加管理器配置
添加Elasticsearch和FilterManager包的最小配置。
# app/config/config.yml ongr_elasticsearch: indexes: App\Document\Product: hosts: - 127.0.0.1:9200 ongr_filter_manager: managers: search_list: # <- Filter manager name filters: - country repository: App\Document\Product # <- Product document rindex service (used to be a repository prior to v3.0) filters: country: # <- Filter name type: choice request_field: country document_field: country
请注意,必须定义
Product
文档。有关更多信息,请参阅ElasticsearchBundle的文档。
在此特定示例中,我们定义了一个名为search_list
的单个过滤器管理器,用于从产品存储库过滤文档,我们将使用名为country
的过滤器来过滤文档中定义的国家。
步骤 4:使用您的新包
FilterManagerBundle已准备好使用。当您定义过滤器管理器时,该包会生成一个根据管理器名称的服务。在这种情况下,它将是ongr_filter_manager.manager.search_list
。
要获取列表,获取服务并调用handleRequest()
。以下是一个在控制器中的简短示例
<?php use ONGR\FilterManagerBundle\DependencyInjection\ONGRFilterManagerExtension; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class ProductController extends Controller { /** * @param Request $request Request. * * @return Response */ public function listAction(Request $request) { $searchList = $this->get(ONGRFilterManagerExtension::getFilterManagerId('search_list')) ->handleRequest($request); $this->render( 'AppBundle:Product:list.html.twig', [ 'filters' => $searchList->getFilters(), 'products' => $searchList->getResult(), ] ); } }
有关如何使用过滤器和渲染结果的更多信息,请参阅此处的基本主题。
故障排除
如果您在实现包时遇到任何问题或困难,请不要害怕创建一个带有错误或问题的议题。此外,ONGR组织在Stack Overflow中有一个标签,因此您也可以在那里询问有关所有ONGR包的问题。
许可
此包受MIT许可的约束。请参阅包中的完整许可文件。