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

如何传递JavaScript变量以包含细枝模板?,javascript,jquery,twig,symfony,Javascript,Jquery,Twig,Symfony,也许这很简单,但直到现在我还不能让它工作。 问题是如何在运行时将JavaScript/Jquery中的变量传递给细枝模板的include 以下是我在Ajax成功函数中尝试做的事情: $.ajax({ //some code success: function (response, textStatus, jqXHR) { var partita = response.partita; $("#myDiv").innerHTML({% include "

也许这很简单,但直到现在我还不能让它工作。 问题是如何在运行时将JavaScript/Jquery中的变量传递给细枝模板的include

以下是我在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变量设置为等于细枝变量:

<script type="text/javascript">
  var foo = '{{ foo }}';
</script>
在服务器上,您需要接收post中发送的变量:

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

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

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

您混淆了javascript和php。虽然细枝包含在服务器上呈现,但响应只是一个响应(第页)。您可以在需要的地方简单地使用javascript变量,但请确保在使用它之前定义了变量,并且Twig由PHP在服务器端呈现。Javascript开始在客户端的浏览器中运行。此时PHP/Twig已经终止。在浏览器中查找页面的源。您看到的内容是由web应用程序呈现的。这不是一个技巧,它只是在javascript中用另一个纯文本替换一些纯文本。如果partita变量包含任何html保留字或符号,这将中断hard@gotoOk不是一个技巧,这里重要的是,根据模板中var partita的角色,这种方法可能是有用的。
var partita = response.partita;
var tempHtml = '{% include ":staff:ViewInfoPartita.html.twig" with {"partita" : "myTempPartita"} only %}';
tempHtml.replace("myTempPartita", partita;
$("#myDiv")innerHTML(tempHtml);