可能这很简单,但直到现在我都无法正常工作。 问题是如何在运行时将一个变量从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“不存在。”
答案 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);