J'essaie d'utiliser assetic dans symfony2 pour gérer mes css. Les liens sont bien générés. Cependant, aucun fichier n'est généré.
Voici ma configuration:
Layout.html.twig
{% stylesheets
'@FooBundle/Resources/public/css/main.css'
filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Config.yml
assetic:
debug: %kernel.debug%
use_controller: false
bundles: [ FooBundle ]
filters:
cssrewrite: ~
Config_dev.yml
assetic:
use_controller: true
Assetic génère le lien foo.foo/app_dev.php/css/957d3aa_main_1.css
. Cependant, le fichier n'est pas là (ni ailleurs). J'ai essayé de jouer avec les autorisations et de regarder dans les journaux (nginx), mais rien pour l'instant.
Toute aide serait grandement appréciée.
Vous avez 2 options lorsque vous traitez avec des actifs. La raison pour laquelle vous ne voyez pas physiquement vos actifs sur votre ordinateur est que vous avez choisi l'option 1.
Cela signifie que chaque chemin d'actif généré dans l'environnement de développement est géré de manière dynamique par Symfony. Par conséquent, Assetic génère des chemins d'accès aux fichiers CSS et JavaScript qui n'existent pas physiquement sur votre ordinateur. Il s’agit d’un contrôleur interne Symfony qui ouvre les fichiers et vous restitue le contenu.
Avantages: _ - Les modifications apportées à vos actifs ont un effet immédiat. C'est formidable en mode dev, car Symfony génère les fichiers de manière dynamique pour vous.
Inconvénients: _ - Cela n’est pas possible en mode prod car le rendu dynamique de chaque ressource serait trop lent - Les ressources ne seront pas directement accessibles sur votre ordinateur (raison pour laquelle vous ne pouvez pas les trouver). le fichier) - Peut être assez lent si vous utilisez beaucoup de filtres, etc ...
Pour faire cela en mode dev, éditez simplement assetic config dans config_dev.yml:
assetic:
use_controller: true
Si vous ne souhaitez pas gérer les ressources de manière dynamique, vous pouvez vider vos ressources manuellement, ce qui signifie qu’elles doivent être écrites physiquement sur votre ordinateur.
Avantages: _ - Il n’est pas nécessaire que Symfony génère les fichiers de manière dynamique, cela fonctionnera donc beaucoup plus vite - Cela est donc parfait en mode prod - Les fichiers sont physiquement accessibles sur le Web/répertoire (ou où que vous choisissiez de les sortir)
Inconvénients:} _ - Vous devez soit vider les actifs chaque fois que vous modifiez quelque chose..ou vous pouvez vider les actifs avec la commande --watch, ce qui peut être un peu gênant si vous travaillez en mode dev.
Pour faire ça:
Définit use_controller sur false (config_dev.yml):
assetic:
debug: %kernel.debug%
use_controller: false
Vous pouvez même choisir où lire et sortir vos actifs si nécessaire
assetic:
read_from: %kernel.root_dir%/Resources/views/
write_to: %kernel.root_dir%/../web/thefolderyouwant/
La sortie commence maintenant à partir de votre write_to config dans assetic
{% stylesheets
'@FooBundle/Resources/public/css/main.css'
output='css/main.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Vous aurez une erreur resource si vous continuez, alors commentez ou supprimez ces routes assetic dans config_dev.yml:
_assetic:
resource: .
type: assetic
Enfin, vous pouvez générer automatiquement les actifs, de sorte que les modifications que vous apportez prennent effet immédiatement:
php app/console assetic:dump --watch
Dans ce cas, le fichier devrait maintenant être disponible:
_ {/web/thefolderyouwant/css/main.css} _
Consultez le livre de recettes pour plus d'informations: Comment utiliser Assetic for Asset Management?
J'ai eu une erreur très similaire à celle-ci. Soudain, Assetic cessa de travailler. La seule chose que j'ai ajoutée était le FOSRestBundle . Peut-être que vous utilisez aussi le reste.
Voici ma solution:
fos_rest:
routing_loader:
default_format: json
param_fetcher_listener: true
body_listener: true
format_listener:
rules:
# render "/api" requests as json
- { path: ^/api, priorities: [ json ], fallback_format: json, prefer_extension: true }
# default, fallback rendering twig templates
- { path: ^/, priorities: ['html', 'application/javascript', 'text/css', '*/*'], fallback_format: html, prefer_extension: true }
J'ai changé priorities: ['html', '*/*']
en priorities: ['html', 'application/javascript', 'text/css', '*/*']
et tout fonctionne bien maintenant.
J'ai eu le même problème, j'avais juste besoin d'installer Java
Sudo apt-get install default-jre
vous pouvez également regarder sur le début de la sortie, cela pourrait aider:
app/console assetic:dump > outfile 2>&1
Il ne génère pas non plus de fichiers lorsque use_controller: true
est activé si vous utilisez SASS pour compiler SCSS mais que Ruby
ou la gem Ruby sass
ne soit pas installée.