如何传递JavaScript变量以包含Twig模板?

时间:2016-12-29 16:03:47

标签: javascript jquery twig symfony

可能这很简单,但直到现在我都无法正常工作。 问题是如何在运行时将一个变量从JavaScript / Jquery传递给一个twig模板的包含。

以下是我在Ajax成功函数中尝试做的事情:

    $.ajax({
    //some code

    success: function (response, textStatus, jqXHR) {
    var partita = response.partita;

    $("#myDiv").innerHTML({% include ":staff:ViewInfoPartita.html.twig" with {"partita" : partita} only %});
}

});

抛出的错误是:“变量”partita“不存在。”

2 个答案:

答案 0 :(得分:0)

Twig依靠php。 Twig和PHP在服务器上运行,Javascript在客户端上运行,因此您无法将Twig变量设置为等于Javascript变量而不将值发送到服务器。但是,您可以将Javascript变量设置为等于Twig变量:

<script type="text/javascript">
  var foo = '{{ foo }}';
</script>

要将Javascript值发送到twig,您需要使用AJAX。使用jQuery,它看起来像这样(最基本的例子可能):

var variableToSend = 'foo';

$.post('{{ path('your_ajax_route') }}', {variableKey: variableToSend});

在您的服务器上,您需要接收帖子中发送的变量:

$variable = $request->get('variableKey');

答案 1 :(得分:0)

在您的客户端收到回复之前会终止Twig,但有一个技巧如果您的twig模板中的变量partita“不会被修改”,则可以通过过滤器或其他处理来应用,所以你可以这样做:

var partita = response.partita;
var tempHtml = '{% include ":staff:ViewInfoPartita.html.twig" with {"partita" : "myTempPartita"} only %}';
tempHtml.replace("myTempPartita", partita;
$("#myDiv")innerHTML(tempHtml);