2012-02-29 19 views
6

Sto cercando di capire symfony2 assetic bundle. Sto provando ad usare un plugin jquery che usa il proprio file css. Ho messo tutto in mybundle/Resources/public e poi diviso in immagini/javascript/css e/Servire immagini relative usando assetic

Il plug-css sta usando percorsi relativi per ottenere le immagini come ../images/sprite.png

Utilizzando Assetic per servire il file css:

{% stylesheets 
    '@MyBundle/Resources/public/css/mycss.css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

Il percorso generato da assetic è /app_dev.php/css/mycss.css, che è corretto credo. Ovviamente i percorsi relativi all'immagine non funzionano più ora. Poiché i file si trovano in mybundle/Resources/pubblico e non in/immagini/

Quando si tenta di utilizzare il filtro cssrewrite, i sentieri sono riscritti per: http://server.com/Resources/public/images/sprite.png. Ma questo non ho corretto, i file non si trovano lì.

Come posso servire le immagini relative usando assetico?

+0

Ho fatto una domanda simile: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 (puoi vedere i miei tentativi di risolverlo anche lì) – apfelbox

risposta

4

È possibile specificare il percorso di uscita e non utilizzare affatto cssrewrite.

{% stylesheets output="bundles/zaysoarbiter/css/forms2.css" 
    '@ZaysoArbiterBundle/Resources/public/css/forms2.css' 
%} 

E poi, naturalmente, si utilizza assets:install per copiare le immagini per web/bundles/bundle/images o dovunque. Per quanto riguarda il browser, il tuo css e le immagini ora sono posizionati l'uno rispetto all'altro. Nella produzione verrà utilizzato assetic:dump per spostare il file css generato effettivamente.

+2

Quando si utilizza questa soluzione, il percorso nell'ambiente dev per le immagini è: app_dev.php/bundles/mybundle/images/sprite.png, che risulta in NotFoundHttpException. Hai anche una soluzione per servirli dev env? – dvcrn

+0

Dato che le immagini tendono a non cambiare, uso solo la risorsa: installa per installarle sulla mia macchina di sviluppo. Così, mentre il css viene generato dinamicamente, le immagini siedono lì. È possibile utilizzare l'opzione --symlink per evitare di dover fare copie reali. – Cerad

+0

Immagino di aver descritto male il mio problema un po '. Quando ho "app.php" o "app_dev.php" nel mio url (es .: app.php/bundles/mybundle/images/sprite.png), il risultato è un 404. Quando si esce da app.php/app_dev .php (es: bundles/mybundle/images/sprite.png), il percorso va bene e l'immagine viene servita. Assetic serve i file css attraverso l'ambiente corrente. Se stai usando app_dev.php, è anche in tutti gli URL di stile generati asseticamente. Significa che tutti i percorsi relativi all'immagine (all'interno dei file .css) stanno utilizzando anche app_dev.php, risultando nella url che ho menzionato sopra. – dvcrn

Problemi correlati