繁体   English   中英

使用typeahead.js的Symfony2:如何将%QUERY传递给路径参数

[英]Symfony2 with typeahead.js: How to pass %QUERY to path parameter

我想利用typeahead.js我Symfony2的项目中。 为此,我有以下javascript:

    $(document).ready(function(){

        var players = new Bloodhound({
          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); },
          queryTokenizer: Bloodhound.tokenizers.whitespace,
          remote: "{{ path('_api_player_search', {searchterm: '%QUERY', limit: 5}) }}",
          prefetch: ''
        });

        players.initialize();

        $('#searchfield').typeahead(null, {
          displayKey: 'firstname',
          source: players.ttAdapter(),
          templates: {
            suggestion: Handlebars.compile(
              '{% verbatim %}<p><strong>{{firstname}}</strong> – {{lastname}}</p>{% endverbatim %}'
            )
          }
        });
    });

如您所见,我想将树枝path助手创建的URL传递给Bloodhound()配置的remote:属性。 (此后我想使用FOSJsRoutingBundle)。

现在的事情是, Bloodhound()不会替换我的树枝表达式中的%QUERY占位符。 有什么办法可以做到这一点?

您的帮助将不胜感激! :)

好的,我找到了解决方案:

根据@Peter Bailey对这个问题回答 ,我创建了一个自定义的树枝扩展名,以便能够将url_decode过滤器添加到我的{{ path() }}标签中,例如{{ path() |url_decode }}

这样可以防止%QUERY转换为%25QUERY ,然后可以用javascript在呈现的网址中替换它。

另外,我还添加了一个|raw过滤器,以避免对&符号进行编码。 所以最后我的标签看起来像这样: {{ path() |url_decode|raw }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM