2011-09-28 23 views
8

Empecé a construir un sitio web con Symfony2, y tuve un pequeño dilema sobre los recursos.Dónde colocar recursos básicos en Symfony2?

El libro Symfony2 dice que cada archivo de recursos tiene que estar en un paquete, pero ¿qué pasa con las imágenes más esenciales, los archivos .js y .css que uso en el archivo base.html.twig en cada página?

¿Debo hacer un CoreBundle o algo similar, solo para estos archivos, o debo ponerlos en la carpeta app \ Resources (o directamente en la carpeta web, tal vez)? Si puedo usar la carpeta app \ Resources para estos, ¿cómo puedo hacer referencia a estos archivos desde la plantilla?

Hacer un paquete solo por esto parece un poco innecesario, y las URL de activos para estos archivos también son feas (por ejemplo, '/bundles/projectcore/images/logo.jpg') en mi opinión.

¿Cuál es la mejor práctica aquí?

Respuesta

6

He tenido situaciones en las que he guardado todos los archivos en/web (es decir,/web/js) y otros en los que los he mantenido dentro de un paquete de 'Activos'.

Si está desarrollando un paquete que se va a reutilizar en numerosos proyectos, tiene sentido almacenar los activos en ese paquete. Creo que luego publicaría/instalaría esos activos en la carpeta web usando la línea de comando. Por ejemplo, supongamos que tiene un BlogBundle que requiere CSS específico. Deberías guardar el CSS en ese paquete, por lo que la próxima vez que uses BlogBundle para un proyecto podrías reutilizar fácilmente el CSS.

Como en muchas otras cosas con Symfony2, sus preferencias personales juegan un papel importante en estas decisiones. Sin embargo, recomiendo mantenerse coherente con el lugar donde almacena sus activos. Tener que gestionar los activos divididos en tres ubicaciones diferentes (web, AssetsBundle, otros paquetes) podría ser un gran dolor de cabeza. Así que elija una ubicación y trate de mantenerse constante.

En cuanto al acceso a los activos desde la aplicación/Recursos ... puede utilizar Assetic para esto. No estoy muy familiarizado con esto, pero creo que puede cargar activos desde cualquier lugar dentro de su proyecto. De hecho, recomendaría echarle un vistazo al código Assetic básico (mira en vendor\Assetic) en lugar del asistente Symfony2 Asset porque tienes una mejor idea de lo que es posible.

+0

Creo que voy a hacer ese AssetsBundle para almacenar estos recursos, todavía es mantenible que ponerlos todos en la carpeta web (especialmente, si quiero reutilizar estos activos en otro proyecto). ¡Gracias por la respuesta! – banrobert

2

Se utilizó un enlace simbólico en Linux para que/web/bundles/projectcore/images puntos a src/Bundle/Resources/public/imágenes

de subversión en Netbeans, que hace el trabajo. Lo bueno es que toda la aplicación permanece en la carpeta/src/Bundle

+3

Para completar, esto se puede lograr ejecutando 'recursos de php app/console: install web --symlink' en el directorio de proyecto de Symfony2. – richsage

+0

Estoy en Windows, así que el enlace simbólico no es una opción para mí :) De todos modos, ¡gracias! – banrobert

+1

@banrobert symlink también funciona en Windows – Inoryy

Cuestiones relacionadas