質問

typeahead + bloodhoundを設定してフィールド上の提案を検索しようとしています。フィールドのHTMLコードは次のとおりです。

<div class="col-sm-10" id="products_forms">
    <input type="text" placeholder="Producto" id="ProductoForm_0_product_id" name="ProductoForm[0][product_id]" class="form-control typeahead">
</div>
.

Symfonyから2つの主な機能を使用します。その関数のルートがどのように見えるかです。

 // the one I use as prefetch parameter in bloodhound
 * @Route("/get_products", name="all_products")

 // the one I use as remote
 * @Route("/get_products/{filter}", name="filter_products")
.

最初の製品はすべての製品をJSON値として返すが、2番目のものはprefetchを実行するための引数として{filter}を取得し、フィルタ処理された製品のみを返します。

今、私は docs およびTypeAheadの場合、 DOCS Here LIKE 1このコード:

// Trigger typeahead + bloodhound
var products = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: Routing.generate('all_products'),
    remote: Routing.generate('filter_products', { 'filter' : '%query' })
});

products.initialize();
$('#products_forms .typeahead').typeahead(null, {
    name: 'products',
    displayKey: 'value',
    source: products.ttAdapter()
});
.

それは右ですか?ページロードがいつプリフェッチされているのかが、Remote要素を入力した場合は、フィルタリングされたものだけが入手できます。 .typeaheadが正しい値であるかどうかはわかりません。フィルタリングされた値を取得するために%queryルートに渡す必要があります。

これは私がTypeAhead + Bloodhound

を初めて使用するのです。

役に立ちましたか?

解決

remote: Routing.generate('filter_products', { 'filter' : '%query' })をe.g。

var url = Routing.generate('filter_products', {filter: 'WILDCARD'});
// ... some code
remote: {
            url: url,
            wildcard: 'WILDCARD'
        }
.

最初にroutingbundleを持つ一般的なURLを生成し、フィルタとして「ワイルドカード」を取ります。PlaceHolderとしてURLで「ワイルドカード」を使用するようにBloodhoundに指示していて、それは入力されたクエリと完全に置き換えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top