smoked/filter-manager-bundle

产品列表过滤器包(symfony flex版本)

安装次数: 2,194

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 43

类型:symfony-bundle

v2.1.2 2018-05-07 16:57 UTC

README

过滤器管理器用于列出文档。它将常用过滤选项和UI元素与Elasticsearch存储库之间的连接起来。值得注意的是,过滤对列表有影响的一切,它可以包括

  • 特定字段值对象的过滤(颜色、国家等)
  • 范围过滤(价格范围、从点距离等)
  • 文档列表分页。分页会改变列表的表示,因此它被认为是过滤器,并像过滤器一样处理。
  • 文档列表排序。与分页相同 - 在此包中,排序是过滤器。
  • 任何影响(不一定是直接可见的)结果列表的自定义因素。它可以排除、增强、修改某些结果,收集某些指标或任何您可以想象的操作。

如果您需要任何帮助,请通过stack overflow询问ONGR支持,这是首选和推荐的方式。

Build Status Coverage Status Latest Stable Version Scrutinizer Code Quality

文档

要查看该包的在线文档,请点击此处。所有文档页面都位于Resources/doc/目录中。

安装

步骤 1:安装FilterManager包

使用Composer安装FilterManager包。

# 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 "~2.0"

请注意,过滤器管理器需要Elasticsearch包,如何安装和配置它的指南可以在这里找到。

步骤 2:启用FilterManager包

在您的AppKernel中启用Filter Manager包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // ...
        new ONGR\ElasticsearchBundle\ONGRElasticsearchBundle(),
        new ONGR\FilterManagerBundle\ONGRFilterManagerBundle(),
        new \JMS\SerializerBundle\JMSSerializerBundle(),
    ];
    
    // ...
}

步骤 3:为管理器添加配置

添加Elasticsearch和FilterManager包的最小配置。

# app/config/config.yml

ongr_elasticsearch:
    managers:
        default:
            index: 
                hosts:
                    - 127.0.0.1:9200
                index_name: products

ongr_filter_manager:
    managers:
        search_list: # <- Filter manager name
            filters:
                - country
            repository: es.manager.default.product # <- Product document repository service to execute queries on
    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组织在Stackoverflow上有标签,因此您也可以在那里询问有关所有ONGR包的问题。

许可

此包受MIT许可证的保护。请参阅包中的完整许可证LICENSE文件。