2012-03-29 16 views
32

Necesito algunos consejos sobre cómo trabajar con activos en Symfony 2. Por ejemplo, ¿tenemos que realizar siempre los activos: actualizar cada vez que se agrega una imagen? Sé que Assetic se ocupa de la administración de archivos css y javascript, pero ¿qué pasa con las imágenes? ¿Cuál sería la mejor práctica para el desarrollo de front-end con Symfony 2? ¿Cómo configuran sus archivos css, images y js en su aplicación para que sea más fácil desarrollarlos, implementarlos y cambiarlos?Symfony 2 - Trabajar con activos

+0

es 'activos: update' un comando real? No lo he encontrado mencionado en ningún otro lado, y no puedo encontrarlo en la base de código Symfony/Assetic. Si existe, me interesaría saber más al respecto. – Sam

+0

Relacionado: http://stackoverflow.com/questions/12123069/how-to-properly-change-what-composer-or-symfony2-does-after-running-composer-up – Kzqai

Respuesta

74

imágenes relativas, si se ha añadido en su carpeta pública, creo que no hay necesidad de realizar assets:update

Sin embargo, si se agrega la imagen dentro de las carpetas de recursos de un paquete, puede que tenga que, en función de su sistema operativo y qué opciones utilizó cuando llamó assets:install

Si está utilizando un sistema operativo que admite enlaces simbólicos (Linux, OS X, y supongo que todos los sistemas operativos pero Windows), puede instalar los activos que llaman (yo no Recordar exactamente la llamada, lo importante aquí es la opción de enlace simbólico):

php app/console assets:install web --symlink 

De esta manera, en lugar de tener una copia de los recursos de cada paquete, tendrá un enlace simbólico, por lo que no debería haber necesidad de actualizar. Si tiene un sistema operativo que no admite enlaces simbólicos, creo que deberá seguir actualizando o reinstalando activos (de hecho, siempre utilicé assets:install, no sabía que había una opción de actualización: P).

En cuanto a la configuración, generalmente pongo todos los css, js, imágenes y cualquier recurso público dentro de un paquete si se usa solo dentro del paquete, y lo coloco en la carpeta pública si es usado por muchos paquetes, o planea usarlo en otros paquetes.

+5

El 'symlink' también funciona en Windows – DoubleYo

+1

Además, si está utilizando Composer para actualizar sus paquetes de proveedores, no olvide configurar el '" extra ": {" symfony-assets-install ":" symlink "}' en su archivo composer.json ([ver documentos ] (http://symfony.com/doc/current/book/installation.html#updating-vendors)). – Geert

+1

El 'symlink' también funciona en Windows cuando ejecuta cmd (o git bash) en modo Administrador. :) porque Assetic funciona con http://php.net/manual/en/function.symlink.php que es compatible con Windows. – Athlan

2

A partir de Symfony 2.7 Esto generará enlaces simbólicos relativos en web directorio:

php app/console assets:install web --symlink --relative 

En composer.json complemento:

"extra": { 
    "symfony-assets-install": "relative" 
} 

Esto también generará enlaces simbólicos relativos en composer update.

+0

Dado que composer.json está comprometido y, por lo tanto, se usa durante la instalación en un entorno de producción, no estoy seguro de que desee esto en su composer.json directamente. – Kzqai

+0

Ver: http://stackoverflow.com/a/15797829/69993 – Kzqai

Cuestiones relacionadas