xi / search-bundle
此包最新版本(dev-master)没有可用的许可信息。
Xi Search Bundle 为您提供前端逻辑以实现 elasticsearch
dev-master
2012-09-04 11:31 UTC
Requires
- exercise/elastica-bundle: dev-master
- knplabs/knp-paginator-bundle: dev-master
- symfony/dependency-injection: 2.1.*
- symfony/form: 2.1.*
- symfony/framework-bundle: 2.1.*
- twig/twig: 1.*
- xi/ajax-bundle: dev-master
This package is not auto-updated.
Last update: 2024-09-14 13:18:02 UTC
README
XiSearchBundle 提供了一种简单的方法来展示您的搜索数据,即使您不确定期望的数据类型。
您可以使用 XiSearchBundle 与任何搜索引擎配合使用,因为 XiSearchBundle 提供了您最终搜索数据对象结构必须实现的接口。
安装
deps -file
[XiSearchBundle]
git=http://github.com/xi-project/xi-bundle-search.git
target=/bundles/Xi/Bundle/SearchBundle
autoload.php 文件
<?php 'Xi\\Bundle' => __DIR__.'/../vendor/bundles', ?>
appKernel.php -file
<?php new Xi\Bundle\SearchBundle\XiSearchBundle(), ?>
routing.yml -file
XiSearchBundle: resource: "@XiSearchBundle/Resources/config/routing.yml" prefix: /
config.yml -file
xi_search: result_renderer_extensions: acmeType: acmeType_renderer_extension default_limit: 50
扩展 ajaxForm(来自 ajaxbundle)并确保您将自定义类绑定为您自己的 ajax 表单处理器(请参阅 ajaxbundle 文档)
class App.AjaxForm.YourCustomClass extends App.AjaxForm.Default xiSearchResultCallback: (content) -> @searchResult = $(@element).siblings('.search-result') if !@searchResult.length $(@element).after('<div class="search-result"></div>') @searchResult = $(@element).siblings('.search-result') @searchResult.html(content)
集成到 ElasticSearch
使用此包最简单的方法可能是与 ElasticSearch 配合使用,因为 XiSearchBundle 为此提供了预制的实现。然而,这需要 FOQElasticaBundle 来工作。
分页
分页使用 knp-pagination 包,默认开启
假设搜索是通过 Ajax 获取的,其中包含一个 jQuery 插件,该插件使用 JavaScript 将接收到的分页逻辑绑定到实际的搜索表单上。
由于分页通常使用搜索表单的默认字段,因此只需配置索引。页面、术语和提交按钮的值也可以被覆盖。
$('#search-result-container').xiSearchPaginate indices: ['#xi_searchbundle_searchtype_index_0', '#xi_searchbundle_searchtype_index_1', ...]
要使这些绑定生效,请配置 knp 分页以使用适当的分页模板。
knp_paginator: page_range: 9 # default page range used in pagination control default_options: page_name: page # page query parameter name sort_field_name: sort # sort field query parameter name sort_direction_name: direction # sort direction query parameter name distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements template: pagination: XiSearchBundle:Pagination:sliding.html.twig # sliding pagination controls template sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template