Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generate Symfony 2 twig URL with parameter value from Javascript?

I want to append query string parameters from javascript (jquery) to symfony 2 url. I want to pass the value of selected radio button to ajax request e.g.in plain php I would have done like

$(document).ready(function() {
    $('.id_radio').click(function() {                      
        $.ajax({
            'url': 'example.php?id='+($this).val(),
            'success': function(r) {
                $('#div1').html(r);
            }
        });
    });

How to generate such URL in symfony2 twig ? We generate URL in symfony 2 twig like

{{ path('example_path', {'id': id}) }} where id is twig variable.

I tried using FOSJsRoutingBundle but don't know if it is for same problem and not sure how to use it ?

I tried below but it is not working.

$('.id_radio').click(function() {
    alert(Routing.generate('example_path', {
        'id': $(this).val()
        }));
    $.ajax({
        'url': Routing.generate('example_path', {
            'id': $(this).val()
            }),
        'success': function(r) {
            $('#div1').html(r);
        }
    });
});

Solution mentioned below by koskoz worked, I did not pass options={"expose"=true} but after adding it worked.

But there is one more problem. It works only until we do not refresh page. If we refresh page, it does not work. To make it work, I have to delete symfony cache files.

It does not work in other browser if we have already opened it in one browser.

like image 576
vishal Avatar asked Jan 23 '14 06:01

vishal


1 Answers

This is exactly what FOSJsRoutingBundle is aiming for:

You configure the route you want to expose in JavaScript, load the JS and then simply do something like this :

Routing.generate('my_route_to_expose', { id: 10 });
like image 193
DevAntoine Avatar answered Oct 02 '22 12:10

DevAntoine