[英]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.