【问题标题】:How to pass javascript variables values from twig to controller using href path in Symfony2?如何使用 Symfony2 中的 href 路径将 javascript 变量值从树枝传递到控制器?
【发布时间】:2014-08-31 15:39:24
【问题描述】:

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

 <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>

问题在于它会显示此消息:变量“a”不存在。 所以,我的问题是:这样做的正确代码是什么?

【问题讨论】:

    标签: javascript symfony variables twig href


    【解决方案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
    });
    

    【讨论】:

      【解决方案2】:

      您需要设置一个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> 
      

      【讨论】:

      • 好吧,还有一件事,让我们假设我们有这个 javascript 变量: var groupid1 = parseInt(data1.groupid); ...我怎样才能用树枝设置它?实际上,如果我输入 {% set groupid1 = parseInt(data1.groupid) %} 它会显示此错误消息: The function "parseInt" does not exist 。提前致谢。
      • 你可以t mix JavaScript`和twig。第一个在客户端运行,第二个在服务器端执行(twig 在 JS 工作时已经渲染)。
      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2023-03-19
      • 2023-03-17
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      相关资源
      最近更新 更多