使用Symfony和Twig从href中的外部JavaScript文件调用函数

使用Symfony和Twig从href中的外部JavaScript文件调用函数,javascript,function,symfony,twig,external,Javascript,Function,Symfony,Twig,External,我正在尝试使用Symfony和Twig从href中的外部JavaScript文件调用函数 这是我的JavaScript文件pm.js: function test(id) { alert(id); } 这是我的模板: {# templates/pm/pm.html.twig #} {% extends 'base.html.twig' %} {% block title %}{{ parent() }} | Private messaging{% endblock %} {% bl

我正在尝试使用Symfony和Twig从href中的外部JavaScript文件调用函数

这是我的JavaScript文件
pm.js

function test(id) {
    alert(id);
}
这是我的模板:

{# templates/pm/pm.html.twig #}
{% extends 'base.html.twig' %}

{% block title %}{{ parent() }} | Private messaging{% endblock %}

{% block body %}
    (...)
    <a href="javascript:test({{ message.id }});">test</a>
    (...)
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script src="{{ asset('build/js/pm.js') }}"></script>
{% endblock %}
{#templates/pm/pm.html.twig}
{%extends'base.html.twig%}
{%block title%}{{parent()}}私有消息{%endblock%}
{%block body%}
(...)
(...)
{%endblock%}
{%block javascripts%}
{{parent()}}
{%endblock%}

我该怎么做?感谢您的帮助。

之所以会出现这种情况,是因为您使用的是编译的
pm.js
javascript文件(我想这就是它存在于
build/js
中的原因)。如果您只是将
pm.js
放在您的公共js文件夹中,而没有编译它,那么您的代码就可以正常工作了

您的问题是编译后的函数不是全局函数。您可以通过几种方法来克服这一问题,其中最简单的方法是:

window.test = function test(id) {
    alert(id);
}
只需将函数test()分配给一个窗口变量
window.test
,它就可以工作了