Maison >interface Web >tutoriel CSS >Comment gérer les chemins d'actifs CSS dans Symfony 2 pour un déploiement sécurisé et efficace ?

Comment gérer les chemins d'actifs CSS dans Symfony 2 pour un déploiement sécurisé et efficace ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-12 09:18:01937parcourir

How to Manage CSS Asset Paths in Symfony 2 for Secure and Efficient Deployment?

Chemins des actifs CSS dans Symfony 2

Problème :

Dans un projet Symfony 2 , vous disposez d'un fichier CSS avec des références à des images et des polices (par exemple, url(..)). Vous souhaitez référencer ces fichiers dans le CSS sans exposer directement les originaux dans le répertoire public.

Solutions possibles :

Solution 1 : Chemins absolus

Changer tous les chemins du CSS en chemins absolus n'est pas une solution adaptée car l'application n'est pas toujours accessible à partir du même sous-répertoire.

Solution 2 : Assetic avec "cssrewrite " Filtre

L'utilisation d'Assetic avec le filtre "cssrewrite" peut aider à réécrire les chemins, mais cela entraîne souvent une génération de chemin incorrecte.

Solution 3 : Chemins relatifs

La modification de tous les chemins dans le CSS pour qu'ils soient relatifs à l'emplacement de la feuille de style fonctionne sauf dans l'environnement de développement, où le chemin CSS contient "/app_dev.php" et conduit à une "NotFoundHttpException" pour les chemins d'image.

Solution de travail :

La seule solution de travail consiste à placer les fichiers CSS d'origine dans un répertoire privé (par exemple, "Resources/assets/css") et à les compiler dans un répertoire public (par exemple, "web/css") utilisant Assetic.

Structure du code :

...
+-src/
| +-MyCompany/
|   +-MyBundle/
|     +-Resources/
|       +-assets/
|         +-css/
|           +-stylesheets...
+-web/
| +-css/
|   +-stylexyz.css
| +-images/
|   +-images...
...

Code Assetic Twig :

{% stylesheets
    '@MyCompanyMyBundle/Resources/assets/css/*.css'
    filter="cssrewrite"
%}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

Processus de compilation :

Ce processus garantira que les fichiers CSS sont compilés dans le répertoire public avec les chemins d'image corrects :

  1. Copiez les fichiers CSS d'origine dans le répertoire public.
  2. Exécutez "assetic:dump" pour compiler les fichiers CSS.
  3. Supprimez les fichiers CSS d'origine du répertoire public.

Avantages :

  • Permet de stocker les fichiers CSS originaux dans un répertoire privé.
  • Compile le CSS dans le répertoire public avec les chemins d'image corrects.
  • N'expose pas les fichiers CSS originaux au public.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn