2013-07-29 2 views
2

J'ai un paquet avec cette structure:Une bonne façon d'inclure les ressources de paquet dans Symfony2

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

Je veux inclure le CSS et JS dans mon modèle et je fais de cette façon:

{% 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 %} 

Mais cela ne fonctionne pas comme console Firebug dit erreur 404: not found alors quelle est la bonne façon d'inclure les ressources de mon paquet? Je lance également la tâche php app/console assets:install --symlink donc j'ai des liens symboliques vers ces fichiers

Répondre

2

Puisque vous avez les configuration des liens symboliques, vous devriez être en mesure de le faire:

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

Mais il peut encore mieux vaut juste laisser Assetic vider les fichiers pour vous comme:

{% javascripts '@BundleName/Resources/public/js/*' %} 
    <script src="{{ asset_url }}" type="text/javascript"></script> 
{% endjavascripts %} 
1

Jetez un oeil à la façon dont les dossiers symétriques ressemblent.

Ils sont de la forme bundles/<bundlename-without-Bundle> ...

Les chemins générés par la fonction asset() sont liés à votre dossier web.

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

Vous pouvez ainsi utiliser la syntaxe @Bundle, mais s'il vous plaît noter que certains filtres (à savoir cssrewrite) ne fonctionnera pas en utilisant cette syntaxe.

{% stylesheets '@BankBundle/Resources/public/css/*' %} 
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}"> 
{% endstylesheets %} 
0

Symfony installe regrouper les ressources dans le répertoire bundles sous /web. Je crois que le chemin correct serait /bundles/bank/css/xxx.css:

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