繁体   English   中英

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

[英]How to pass a JavaScript variable to include Twig Template?

也许这很简单,但是直到现在我还是无法正常工作。 问题是如何在运行时将变量从JavaScript / Jquery传递到树枝模板的包含中。

这是我要在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”不存在”。

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

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

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

var variableToSend = 'foo';

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

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

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

在您的客户端中获得响应之前会先处理Twig,但是有一个技巧 ,如果您的变量partita在过滤器或其他处理程序中不会在twig模板中“被修改”,那么您可以应用一个技巧 ,因此您可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM