2

我有一个具有这种结构的捆绑包:

/src/BankBundle/
    ...
    /src/BankBundle/Resources/
        ...
        public/
            css/
                foundation-datepicker.css
            js/
                common.js
                foundation-datepicker.js
        ...
    ...

所以我想在我的模板中包含 CSS 和 JS,我正在这样做:

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

{% block javascripts %} 
{{ parent() }}
<script src="{{ asset('/js/foundation-datepicker.js') }}" type="text/javascript"></script> 
<script src="{{ asset('/js/common.js') }}" type="text/javascript"></script> 
{% endblock %} 

{% block stylesheets %}
{{ parent() }}
<link href="{{ asset('/css/foundation-datepicker.css') }}" rel="stylesheet" />
{% endblock %}

但它不起作用,因为 Firebug 控制台说404 Error: not found那么从我的包中包含资源的正确方法是什么?我也运行任务php app/console assets:install --symlink,所以我有这些文件的符号链接

4

3 回答 3

2

看看符号链接文件夹的外观。

它们的形式bundles/<bundlename-without-Bundle>...

asset()函数生成的路径是相对于您的web文件夹的。

{{ asset('bundles/bank/css/foundation-datepicker.css') }}

您也可以使用该@Bundle语法,但请注意,某些过滤器 ( ie cssrewrite) 无法使用此语法。

{% stylesheets '@BankBundle/Resources/public/css/*' %}
     <link rel="stylesheet" type="text/css" href="{{ asset_url }}"> 
{% endstylesheets %}
于 2013-07-29T20:54:29.570 回答
2

由于您已经设置了符号链接,因此您应该能够:

{{ asset( 'bundles/lowercasebundlename/js/foundation-datepicker.js' ) }}

但让 Assetic 为您转储文件可能会更好:

{% javascripts '@BundleName/Resources/public/js/*' %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
于 2013-07-29T20:55:44.613 回答
0

Symfony 将捆绑资源安装bundles/web. 我相信正确的路径是/bundles/bank/css/xxx.css:

{% block stylesheets %}
    {{ parent() }}
    <link href="{{ asset('bundles/bank/css/foundation-datepicker.css') }}" rel="stylesheet" />
{% endblock %}
于 2013-07-29T20:55:12.597 回答