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 :
Avantages :
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!