我正在尝试以下方式添加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">© 2012 -
Jander</a>
</p>
</footer>
</body>
</html>
有什么想法吗?
答案 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 %}