【问题标题】:Call js function from external file Symfony Twig从外部文件 Symfony Twig 调用 js 函数
【发布时间】:2020-03-08 17:47:40
【问题描述】:

我在 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 未定义 在 HTMLButtonElement.onclick (VM3883 manageAccounts:183) onclick@VM3883 manageAccounts:183

我阅读了其他一些关于此的帖子,但没有一篇真正提供了可行的解决方案。

感谢您的帮助!

【问题讨论】:

    标签: javascript symfony twig symfony4


    【解决方案1】:

    您好,欢迎来到 SO 论坛。根据提供的代码段很难确定您的问题 - 但树枝块的使用可能没有按照您的假设实现/工作。即,实现的主体块内的 javascript 块与基本模板中类似命名的块没有相关性(我假设那里有类似命名的块),因为它放置在您在此 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 %}
    

    【讨论】:

    • 您好,感谢您的回答;)不幸的是,我无法提供更多信息:/ 我注意到,当我进入包含此视图的页面时,我可以在 chrome 下的 Sources 中看到该文件。但仍然无法从中调用任何函数。我确实有 Jquery,这就是为什么我调用 parent()
    【解决方案2】:

    我希望每个人都在这个困难时期做得很好!法国上周开始了遏制,所以我有足够的时间找到解决方案。

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

    在你的 js 外部文件中,你必须像这样声明你的函数:

    window.myfunction = function myfonction(){}
    

    就这些了。。

    这可能会导致安全问题吗?我不知道所以我问xD

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      相关资源
      最近更新 更多