JavaScript 在 Symfony 中加载两次

标签 javascript symfony

当我扩展我的 base.html.twig 时,我的 JS 加载了两次。这是我的代码:

{% block javascripts %}
{% javascripts
'@MyBundle/Resources/public/app/src/lib/jquery.js'
'@MyBundle/Resources/public/app/src/lib/jquery-ui.js'
'@MyBundle/Resources/public/app/src/lib/angular.js'
'@MyBundle/Resources/public/app/src/lib/ui-bootstrap-tpls-0.10.0.js'
'@MyBundle/Resources/public/app/src/lib/fullcalendar.js'
'@MyBundle/Resources/public/app/calendar.js'
'@MyBundle/Resources/public/app/src/lib/angular-route.js'
'@MyBundle/Resources/public/app/schedulePlanner.js'
 %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

最佳答案

我有一个类似的问题,结果证明是由错位的 {% endblock %} 标签引起的。

这是我的基本观点:

{# app/Resources/views/base.html.twig #}
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}{% endblock %}</title>
        {% block header %}{% endblock %}
        {% block stylesheets %}{% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
    </head>
    <body>
        <!--[if lt IE 9]>
            <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a>.</p>
        <![endif]-->

        {# debug #}
        {% if pre is defined and pre is not empty and app.environment == 'dev' %}
            <pre>
                {{ pre }}
            </pre>
        {% endif %}

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

这是扩展的包模板:

{% extends "::base.html.twig" %}

{# title #}
{% block title %}{% endblock %}

{% block header %}
    <meta name="HandheldFriendly" content="True">
    <meta name="MobileOptimized" content="320">
    <meta name="viewport" content="width=device-width">
    <link href='http://fonts.googleapis.com/css?family=Pathway+Gothic+One' rel='stylesheet' type='text/css'>
{% endblock %}

{# style #}
{% block stylesheets %}
{% endblock %}

{# body #}
{% block body %}

    {% block content_header %}
        <div class="header"><div class="header-in">
            <header>
            </header>
        </div></div>

        <div class="nav"><div class="nav-in">
            <nav>
                <ul id="menu" class="menu clearfix">
                    {% block content_header_nav %}
                    {% endblock %}
                </ul>
            </nav>
        </div></div>
    {% endblock %}

    <div class="block"><div class="block-in">

        <div class="content"><div class="content-in clearfix">

            {% set notices = app.session.flashbag.get('notices') %}
            {% if notices is not empty %}
            <ul class="msg ajax-flash-msg">
              {% for notice in notices %}
              <li>{{ notice }}</li>
              {% endfor %}
            </ul>
            {% endif %}

            {% block content %}{% endblock %}

        </div></div>

    </div></div>

    <div class="footer"><div class="footer-in">
        <footer>
            {% block footer %}{% endblock %}
        </footer>
    </div></div>

    {# javascript #}
    {% block javascripts %}
    <script src="{{ asset('assets/require.js') }}"></script>
    {% endblock %}

{% endblock %}

您会注意到我的 javascript block 位于 bundle 模板的 body block 内,这导致它在 html 输出到浏览器时呈现两次。

为了解决这个问题,我将 javascript block 移到了 body block 之外。

关于JavaScript 在 Symfony 中加载两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473353/

相关文章:

PostgreSQL、Doctrine SQL语法错误; MySQL 有效

php - Symfony 中允许空值但不允许空字符串

javascript - 如何在动态生成单选按钮上应用样式表?

javascript - 如何从 HTML 页面中删除多个具有相同类的 div

javascript - jQuery .find() 和 .animate()

php - symfony 第一次无法安装资源

php - 如何在 Symfony 控制台中禁用命令的输出?

php - 如何在 Symfony2 中禁用一个转换器验证错误 "dynamically"

javascript - 发送 HTTP 请求以调用 Google Sheet API 来编辑单元格

javascript - React JS/Typescript 中的空合并运算符