I pass by ajax GET parameters, my url looks like:
example.com/autocamplete?term=string
I add route for that:
autocomplete:
path: /autocomplete?term={term}
defaults: { _controller: CatalogWebBundle:Default:autocomplete }
But it something wrong with my route, because I get error:
GET http://127.0.0.1:8000/autocomplete?term=sdfsd 500 (Internal Server Error)
How to rewrite my route to ajax get patameters ?
JS is:
<script type="text/javascript">
$(function() {
//autocomplete
$("#search").autocomplete({
source: "\/autocomplete",
minLength: 1
});
});
</script>
Install FOSJsRoutingBundle, create a correct route as it is incorrect in your question.
So, you should do something like this:
add bundle JS (may be in base template for global usage):
<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
configure routing (without QS):
autocomplete:
path: /autocomplete
defaults:
_controller: CatalogWebBundle:Default:autocomple
options:
expose: true
configure your JS:
<script type="text/javascript">
$(function() {
//autocomplete
$("#search").autocomplete({
source: Routing.generate('autocomplete', { 'term': value });,
minLength: 1
});
});
</script>
besides the above version (using FOS JS Routing),
if you are "rendering" the JS function files without any need for "dynamic generation or routes" you can use a more simple approach
{{ path('routeName', {'slug': slug}) }}
Note: in your case - building a search - it won't work