如何使用Symfony2中的href路径将javascript变量值从twig传递给控制器​​?

时间:2014-07-10 09:57:45

标签: javascript symfony variables twig href

我想知道如何使用Symfony2中的href路径将javascript变量值从twig传递给控制器​​。这是我的代码:

 <html>
<head>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
</head>
<body>
    <script>
        var a = "hello";
        var b = "hi";
        var c = $('<a href="{{ path('ikproj_groupe_homepagegroupe1', {'id': a, 'num': b}) }}">send data</a>');
        $('body').append(c);
    </script>    
</body>
</html>

问题是它显示以下消息:变量&#34; a&#34;不存在 。 所以,我的问题是:这样做的正确代码是什么?

2 个答案:

答案 0 :(得分:1)

您需要设置twig变量。例如:

<script>
    {% set a = 'hello' %}
    {% set b = 'hi' %}
    var c = $('<a href="{{ path('ikproj_groupe_homepagegroupe1', {'id': a, 'num': b}) }}">send data</a>');
    $('body').append(c);
</script> 

答案 1 :(得分:1)

我发现最简单的方法是使用href(或可能的数据)属性设置原始模板中的路径,如..

<a href="{{ path('route_name', {'id': a }) }}" 
            class="some-specific-class">Click</a>

或使用数据属性..

<a href="#" data-href="{{ path('route_name', {'id': a }) }}" 
            class="some-specific-class">Click</a>

然后在javascript中使用..

$('a.some-specific-class').on('click', function(e) {
    e.preventDefault();

    var href = $(this).attr('href');
    .. or
    var href = $(this).data('href');

    .. do things with href
});

或者你可以使用FOSJSRoutingBundle并在数据属性中传递id并使用..来生成路径。

$('a.something').on('click', function(e) {
    e.preventDefault();

    var id = $(this).data('id'),
        url = Routing.generate('rout_name', {'id': id });

    .. do stuff with url
});