[英]Symfony 4 - Is there a way to use a script function to set a twig variable?
我想从javascript设置一个提示框并将输入的文本传递给我的树枝属性msg。
但我不知道如何从我的脚本传递到我的树枝。
现在有我的代码。
<script type="text/javascript">
function PromptMessage() {
var saisie = prompt("Saisissez votre texte :", "Texte par défaut");
console.log(saisie);
}
</script>
{# It works with an hardcode value in twig #}
{% set msg = 'egaezrf' %}
<button type="button" class="btn btn-success" onclick="window.location.href = '{{ path('email_index', {'iduser': onlineorder.iduser.iduser, 'msg': msg}) }}';">Send Email</button>
这里似乎存在一个根本性的误解。 在 JS 接近执行之前,Twig 代码在服务器上运行。 一旦树枝代码已被执行,然后在结果页转到浏览器并执行JS。
实际上,这个问题是“我的代码如何回到过去”?
我建议使用 Javascript 路由系统 ( https://symfony.com/doc/current/routing/generate_url_javascript.html ) 直接在 Javascript 中生成您需要的 url。 这看起来像
// JAVASCRIPT
var url = Routing.generate('email_index', {
'iduser': iduser,
'msg': saisie
});
好的,你已经问了一个关于如何将所有这些组合在一起的后续问题。 我建议不要使用 button 元素的onclick
属性:它可能是你在课堂上所做的,但它被认为已经过时了。 获取对按钮的引用:
var myButton = document.querySelector("button");
将iduser
值传递给 Javascript(两个选项之一):
var iduser = {{ onlineorder.iduser.iduser }}; // if it's an int
var iduser = "{{ onlineorder.iduser.iduser | e('js') }}"; // if it's a string.
// the e('js') is a Twig function to safely generate Javascript strings, see
// https://twig.symfony.com/doc/2.x/filters/escape.html
然后使用上面的第一个代码块生成url
。
最后在按钮上设置事件处理程序:( 文档)
button.addEventListener("click", function(event) {
window.location.href = url;
});
如果您有任何其他问题,我建议您询问您的讲师/主管。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.