32 votes

Où vont les ressources CSS et JS partagées par Symfony2, selon les meilleures pratiques?

Je place normalement mes ressources JS et CSS Assetic dans un DefaultBundle, mais je suppose que le meilleur endroit pour les placer serait dans les dossiers app / Resources / public / (js | css).

En outre, pour référencer les actifs, nous utilisons:

 {% javascripts filter="" output="js/core.js" debug=true
    "@DefaultBundle/Resources/public/js/jquery-1.6.2.js" %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
 

Comment faire pour référencer des ressources partagées telles que jQuery et mes feuilles de style CSS dans App / Resources / Public / ...?

25voto

David Cramblett Points 309

Vous pouvez aussi utiliser ceci:

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

20voto

julesbou Points 1573

Oui c'est un bon choix de ne pas mettre les bibliothèques dans un Bundle

voir ici : http://symfony.com/doc/current/cookbook/bundles/best_practices.html#vendors

Un bundle ne devrait pas embarquer tiers des bibliothèques écrites en JavaScript, CSS, ou de toute autre langue.


Ce que je vous propose, est de vous mettre jquery et réinitialisation des fichiers en vertu de quelque chose comme: web/css/reset.css et web/js/jquery.min.js et de modifier votre code avec quelque chose comme:

{% javascripts filter="" output="js/core.js" debug=true
    "/js/jquery-1.6.2.js" %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}

J'espère que cela fonctionnera pour vous.

7voto

Martin Lie Points 797

Ma solution est presque le même que celui de David, mais à l'aide de %kernel.root_dir% au lieu de coder en dur l' app le dossier (bien que je doute que beaucoup de changement de ce dossier à son nom), par ex.:

{%- javascripts output='compiled/main.js'
    '%kernel.root_dir%/Resources/public/js/jquery-1.10.2.min.js'
    '%kernel.root_dir%/Resources/public/js/underscore-1.5.2.min.js'
    '@MyOwnBundle/Resources/public/js/default.js'
-%}
    <script src='{{ asset_url }}'></script>
{%- endjavascripts %}

Si le tiers des bibliothèques de références de leurs propres biens (par exemple, généralement des images en img sous-dossier, référencé à partir de .les fichiers css), il est généralement suffisante pour créer les liens symboliques correspondant sur le serveur, par exemple, ln -s .../app/Resources/public/img .../web/img ou quelque chose de similaire. Ou utiliser le cssrewrite filtre, bien sûr - mais méfiez-vous de ses mises en garde.

(Notez également que je n'utilise pas l' type="<mime-type>" d'attribut, comme les fichiers' content-type est fourni dans les en-têtes HTTP de toute façon.)

2voto

jeremieca Points 339

Vous pouvez remplacer ../app/Resources/public/css/ par public/css/ . La même chose pour le dossier Javascript.

 {% stylesheets filter='less' output='css/core' 'public/css/*' %}

      <link href="{{ asset_url }}" type="text/css" rel="stylesheet" />

{% endstylesheets %}

{% javascripts "public/js/*" %}

      <script src="{{ asset_url }}" type="text/javascript"></script>

{% endjavascripts %}
 

Ici, tous les fichiers du dossier /web/public sont automatiquement chargés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X