symfony2:只是想添加一个js

时间:2012-03-09 10:41:41

标签: symfony

我正在尝试以下方式添加js文件。文件foo.js位于root_project/web/js

{% extends "AcmeAcmeBundle::layout.html.twig" %}

{% block javascripts %}

    <script src="{{ asset('/js/foo.js') }}" type="text/javascript"></script>
{% endblock %}


{% block title %}Acme{% endblock %}

但它没有加载。

编辑:这里有我的代码和HTML:

    {% extends "JanderJanderBundle::layout.html.twig" %} 
{% block javascripts %} 
    <script src="{{ asset('js/propuestas_public.js') }}" type="text/ 
javascript"></script> 
{% endblock %} 
{% block title %}JANDER | Porque queremos{% endblock %} 
{% block titH1 %}JANDER | Porque queremos{% endblock %} 
{% block metadesc %}Regístrate y participa en Jander{% endblock %} 
{% block pageid 'index' %} 
{% block content %} 
    <h2>Propuestas:</h2> 
    {% for propuesta in propuestas %} 
        {% include 'JanderJanderBundle:Jander:propuesta.html.twig' 
with { 'propuesta' : propuesta } %} 
    {% endfor %} 
    <form id="compsList" action="{{ path('admin_propuesta_new') }}" 
method="post" {{ form_enctype(formulario) }}> 
        {{ form_widget(formulario) }} 
        <input id="workersShow" type="submit" value="Enviar" /> 
    </form> 
{% endblock %} 
//////////////////////////// 
<!DOCTYPE html> 
<html lang="es"> 
    <head> 
        <meta charset="utf-8" /> 
        <title>JANDER | Porque queremos</title> 
        <meta name="description" content="Regístrate y participa en 
Jander" /> 
        <link rel="shortcut icon" href="/favicon.ico?v2" /> 
                                                                <link 
href="/css/combined/combined.css?v2" media="screen" rel="stylesheet" 
type="text/css" /> 
        <!--[if lt IE 9]> 
            <script src="http://html5shiv.googlecode.com/svn/trunk/ 
html5.js"></script> 
        <![endif]--> 
                                                <script src="/js/ 
combined/combined.js?v2" type="text/javascript"></script> 
    </head> 
    <body id="index"> 
        <header> 
            <div class="container_16"> 
                    <h1><a href="/index_dev.php/">JANDER | Porque 
queremos</a></h1> 
        <nav> 
            <ul> 
                                    <li><a href="/index_dev.php/ 
registro"> 
                      Regístrate 
                    </a></li> 
                                <li> 
                                            <a href="/index_dev.php/ 
ayuda">Ayuda</a> 
                                    </li> 
                <li> 
                                            <a href="/index_dev.php/ 
contacto">Contacto</a> 
                                    </li> 
                            </ul> 
        </nav> 
            </div> 
        </header> 
        <div id="headerSubmenu"> 
                    </div> 
        <div class="container_16"> 
                <div id="content" class="holder"> 
        <div id="scrollPane" class="scroll-pane"> 
                <h2>Propuestas:</h2> 
            <div class="propuesta"> 
                    <div> 
                <span>jander clander</span> 
                <span>09/03/2012</span> 
                <span>trafico</span> 
            </div> 
            <div> 
                Esta es mi propuesta 
            </div> 
            </ul> 
</div>        <form id="compsList" action="/index_dev.php/admin/ 
propuesta/new" method="post" > 
        <div id="form"><input type="hidden" id="form__token" 
name="form[_token]" value="a12ae2d0b9a677a63c6e3cc121bf86fbbf37911c" / 
><div><label for="form_propuesta" class=" required">Propuesta</ 

label><input type="hidden" id="form_propuesta" name="form[propuesta] 
[]" required="required" value="" /><input type="text" 
id="autocomplete_form_propuesta" name="autocompleter_form[propuesta] 
[]" required="required" value="" /><script type="text/javascript"> 
        var propuesta_choices = [{"label":"Esta es mi 
propuesta","value":1}]; 
        jQuery('#autocomplete_form_propuesta').live('keydown', 
function(event) { 
                if (event.keyCode === $.ui.keyCode.TAB && 
jQuery(this).data('autocomplete').menu.active) 
                    event.preventDefault(); 
            }).autocomplete({ 
                source: propuesta_choices, 
                focus: function(event, ui) { return false; }, 
                select: function(event, ui) { 
                                    terms = this.value.split(/,\s*/); 
                    terms.pop(); 
                    terms.push(ui.item.label); 
                    terms.push(''); 
                    this.value = terms.join(', '); 
                    terms = jQuery('#form_propuesta').val().split(/, 
\s*/); 
                    terms.pop(); 
                    terms.push(ui.item.value); 
                    terms.push(''); 
                    jQuery('#form_propuesta').val(terms.join(',')); 
                                return false; 
            } 
        }); 
                    var propuesta_source = 
jQuery('#autocomplete_form_propuesta').data('autocomplete').source; 
jQuery('#autocomplete_form_propuesta').autocomplete('option', 
'source', function(request, response) { 
                request.term = request.term.split(/,\s*/).pop(); 
                propuesta_source(request, response); 
            }); 
            </script></div></div> 
        <input id="workersShow" type="submit" value="Enviar" /> 
    </form> 
        </div> 
    </div> 
    <div id="lateral"><!-- Lateral derecho --> 
                    <p>Bienvenido a <strong>Jander</strong>.</p> 
            <div class="usuario"> 
                                                    <p>Introduce tus 
credenciales</p> 
                    <a href="/index_dev.php/login" class="btn">Iniciar 
sesión</a> 
                    <p>¿No estás registrado? <a href="/index_dev.php/ 
registro">Regístrate</a></p> 
                            </div> 
            </div> 
        </div> 
        <footer class="clearfix"> 
                            <p class="symfony2"> 
                    Creado con <a href="http://www.symfony.com" 
target="_blank">Symfony2</a> 
                </p> 
                <p class="copy"> 
                    <a href="/index_dev.php/privacidad"> Privacidad</ 
a> 
                    <a href="/index_dev.php/condiciones"> Condiciones 
de uso</a> 
                    <a href="/index_dev.php/copyright">&copy; 2012 - 
Jander</a> 
                </p> 
                    </footer> 
    </body> 
</html>

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

请记住在所有子模板中添加{{ parent() }}以获取主模板中块的内容:

{% extends "JanderJanderBundle::layout.html.twig" %} 
  {% block javascripts %} 
    {{ parent() }}
     <script src="{{ asset('js/propuestas_public.js') }}" type="text/javascript"></script> 
  {% endblock %} 

并确保您在主模板中有一个javascript块{% block javascripts %}

答案 1 :(得分:4)

这适用于我添加多个javascripts:

{% block javascripts %}
    {% javascripts
        '@MyBundle/Resources/public/js/*',
        '@SomeOtherBundle/Resources/public/js/special.js',
    %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

也许你的js文件引用错了?您是否尝试将bundles/mybundle/thefile.js用作文件路径?

另外,请不要忘记通过app/console assets:install [--symlink] web复制捆绑包的资产。确保您的文件位于公共“web”文件夹中。

答案 2 :(得分:2)

不要在资产路径中放置起始'/':

{% block javascripts %}
    <script src="{{ asset('js/foo.js') }}" type="text/javascript"></script>
{% endblock %}