从Twig调用JavaScript函数

时间:2015-05-31 19:45:17

标签: javascript symfony twig

我正在研究Symfony2项目,我想调用一个JavaScript函数,并从Twig传递一个JSON对象数组(我从控制器中获取)。

但是第一个非常简单的测试已经失败,例如:

main.js:

function helloWorld(name) {
   console.log("hello " + name);
}

链接到 twig 中的main.js并调用函数:

<body>
    <script>helloWorld("world!")</script>

    {% block javascripts %}
        <script src="{{ asset('js/main.js') }}"></script>
    {% endblock %}
</body>

导致ReferenceError:

  

&#34;未捕获的ReferenceError:未定义helloWorld&#34;

我需要采取哪些不同的方法才能使其发挥作用?

编辑:感谢两位花时间回答的人。所描述的枝条实际上由一堆嵌套的树枝组成,javascript包含的位置基于Symfony documentation,猜测这是为什么我没有看到明显的。虽然在表达问题时应该自己检测到问题....

2 个答案:

答案 0 :(得分:7)

反转功能的顺序:

<body>
{% block javascripts %}
    <script src="{{ asset('js/main.js') }}"></script>
{% endblock %}

<script>helloWorld("world!")</script>
</body>

答案 1 :(得分:3)

在执行函数之后,将带有helloWorld定义定义的脚本放在中。这意味着JavaScript还不知道该函数并触发此错误。

解决方案:将您的javascript置于导入之下(例如,在</body>之前,在javascripts块中)或将导入放在页面javascript之前(例如在头部)。