Attualmente sto sviluppando un'applicazione Web con Symfony 2.1.0.Symfony2: Come includere correttamente le risorse insieme all'ereditarietà dei modelli di Twig?
Ho letto il numero Templating chapter del libro e sto cercando di includere risorse (in questo momento, è solo un singolo foglio di stile) nelle mie pagine web.
sto usando il Three-level inheritance system menzionato nel libro, e la mia struttura applicazione attualmente assomiglia a questo:
- app/Resources/views/
- base.html.twig : Modello, contenente titolo, fogli di stile e corpo blocchi.
- src/I miei/PageBundle/Resources/views
- layout.html.twig: modello di layout (estendendo il modello di base), aggiungendo il foglio di stile principale al foglio di stile blocco, e sovrascrivendo il corpo blocco, compreso navigation.html.twig e definente una contenuto blocco
- layout admin.html.twig: stessa cosa come sopra, ma compresi navigazione-admin.html.twig
- src/My/PageBundle/Resources/views/principali
- modelli standard, che si estende il modello di layout e sovrascrivendo il contenuto blocco
- src/mio/PageBundle/Resources/views/Amministrazione
-
modelli di amministrazione
- . Stessa cosa sopra, ma estendendo il modello di layout di amministrazione.
- src/mio/PageBundle/Resources/public/css
- main.css: foglio di stile principale
Come potete vedere, ho metti il foglio di stile nel mio pacchetto. Non so se questa è una buona pratica o no.
Ora, il punto è, nel layout.html ho aggiunto questo:
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" type="text/css" href="{{ asset('css/main.css)' }}" />
{% endblock %}
Ma asset('css/main.css')
è solo il collegamento a /css/main.css
, mentre ./app/console assets:install
installa le attività in web/bundles/mypagebundle/
. Non mi piace il fatto che in questo modo, il nome del mio bundle sarebbe pubblicamente visibile (il che potrebbe far sospettare che gli utenti stiano usando Symfony, e mi piace mantenere l'interno della mia pagina web, beh, interno). È possibile modificare la directory in cui assets:install
installa le risorse? Mi sembra noioso installare manualmente le risorse nel web /.
Sto anche pensando di utilizzare Assetic per la gestione delle risorse, poiché personalmente mi piace la possibilità di ridimensionare automaticamente i miei script/fogli di stile e archiviarli tutti insieme in un unico file. Tuttavia, sento che questo non è possibile se includi fogli di stile a diversi livelli, cioè non funzionerebbe con il sistema di ereditarietà a tre livelli. È possibile aggirare il problema? Inoltre, usare Assetic mi consente di nascondere il nome del mio gruppo al pubblico?
Così non è in alcun modo possibile per avere la colla Assetic tutto fogli di stile a tutti i livelli insieme? Perché con il secondo metodo, dovrei cambiare TUTTI i sottotipi se decido di aggiungere un altro foglio di stile al massimo livello, giusto? –
Giusto. Si potrebbe anche definire la risorsa "principale" in config.yml (consultare i documenti) e fare riferimento a questa risorsa anziché fare riferimento direttamente a main.css. In questo modo è possibile modificare l'asset principale senza dover modificare tutti i modelli. – arnaud576875
Grazie. In una nota a margine, il resto della mia struttura applicativa ti sembra una buona pratica o c'è qualcosa che mi manca? –