ongr/filter-manager-bundle

产品列表的过滤器管理包

安装量: 122,016

依赖项: 6

建议者: 0

安全性: 0

星标: 26

关注者: 20

分支: 43

公开问题: 18

类型:symfony-bundle

v3.1.0 2022-05-30 08:50 UTC

README

过滤器管理用于列出文档。它提供了常用过滤选项和UI元素与Elasticsearch存储之间的联系。重要的是要提到,过滤对列表有影响的一切,它可以是

  • 针对特定字段值对象的过滤(颜色、国家等)
  • 范围过滤(价格范围、从点的距离等)
  • 文档列表分页。分页会改变列表的表示,因此它被认为是一种过滤,并被视为一种过滤。
  • 文档列表排序。与分页相同 - 在此包中,排序是一种过滤。
  • 任何影响结果列表的因素(不一定是直接可见的)。它可以排除、提高某些结果,修改某些结果,收集一些度量或任何您可以想象到的其他操作。

如果您需要任何帮助,请在Stack Overflow上提问,这是首选和推荐的方式询问ONGR支持问题。

Build Status Coverage Status Latest Stable Version Scrutinizer Code Quality

文档

有关此包的在线文档,请点击此处。所有文档页面都位于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许可的约束。请参阅包中的完整许可文件