簡體   English   中英

Symfony 4 - 有沒有辦法使用腳本函數來設置樹枝變量?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM