簡體   English   中英

從外部文件 Symfony Twig 調用 js 函數

[英]Call js function from external file Symfony Twig

我在 Symfony 4.4 中從樹枝視圖調用函數時遇到問題。 這個視圖叫做UserList.html.view並且它擴展了base.html.twig

文件的開頭如下:

{% extends 'base.html.twig' %}
{% block body %}
{% block javascripts %}
    <script src="{{ asset('build/js/custom.js') }}"></script>
...

我還嘗試通過添加條目來使用 Encore,但它不起作用。 訪問外部函數的唯一方法是從父視圖調用它們,這顯然不是我想要的。

我得到的錯誤:

Uncaught ReferenceError: coucou is not defined at HTMLButtonElement.onclick (VM3883 manageAccounts:183) onclick @ VM3883 manageAccounts:183

我閱讀了一些關於此的其他帖子,但實際上沒有一個提供有效的解決方案。

感謝您的幫助 !

您好,歡迎來到 SO 論壇。 很難根據提供的代碼段來解決您的問題 - 但樹枝塊的使用可能沒有按照您的假設實現/工作。 即實現的主體塊內的 javascript 塊與基本模板中的類似命名的塊沒有相關性(我假設那里有類似命名的塊),因為它被放置在主體塊內,你在這個UserList.html.twig中完全覆蓋了它UserList.html.twig模板。

一個基本的工作樹枝結構是這樣的:

base.html.twig

<html>
    <head>
        ...
    </head>
    <body>
        ...
        {% block body %}
            ...
        {% endblock %}
        ...
        {% block javascripts %}
           ...
        {% endblock %}
        ...
    </body>
</html>

UserList.html.twig - 請注意parent()調用,該調用確保也包含來自繼承模板的塊內容(即,如果您在那里定義了一些通用 jquery 或其他一些通用 js 包含) - 沒有parent()您將在此模板中再次完全定義 javascripts 塊內容。

{% extends 'base.html.twig' %}

{% block body %}
   ...
{% endblock %}

{% block javascripts %}
   {{ parent() }}
   <script src="{{ asset('build/js/custom.js') }}"></script>
{% endblock %}

我希望每個人在這個困難時期都做得很好! 法國上周開始遏制,所以我有足夠的時間找到解決方案。

有史以來最愚蠢的事情,但我不知道..

在你的 js 外部文件中,你必須像這樣聲明你的函數:

window.myfunction = function myfonction(){}

就這樣..

這可能會導致安全問題嗎? 我不知道所以我問xD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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