Interadictos Blog Programación y sistemas Symfony: Archivos de configuración
Programación y sistemas

Symfony: Archivos de configuración

Los archivos de configuración de Symfony son archivos de texto con la extensión .yml. Están escritos en lenguaje YAML (si te suena a chino, (ya somos dos) no te preocupes en un par de días enreando con él, será como de la familia xD).

Bueno, sigo dandole caña a Symfony a través del manual en español, y después de practicar un poco con los conocimientos que he adquirido últimamente, puedo haceros un resumen de lo que os vais a encontrar.

Archivos de configuración

Los archivos de configuración de Symfony son archivos de texto con la extensión .yml. Están escritos en lenguaje YAML (si te suena a chino, (ya somos dos) no te preocupes en un par de días enreando con él, será como de la familia xD). Symfony tiene una convención muy exacta/estricta para escribir archivos de configuración, pero como la idea de este artículo no es copipastear el manual te tocará leerlo (lo siento) te dejo el capítulo donde se habla de los archivos: http://librosweb.es/symfony_1_2/capitulo5/el_sistema_de_configuracion.html.

Hay varios lugares donde encontrarás archívos de configuración. El primero está en la carpeta /config del proyecto donde podrás decidir sobre la configuración general de todo el proyecto. El segundo se encuentra dentro de cada una de las aplicaciones que haya en el proyecto. Para nuestro caso pensemos que hemos creado una aplicación llamada frontend, por tanto la ruta para estos archivos será /apps/frontend/config y por aquí es por donde tendrás que empezar a configurar, me explico:

Esta carpeta dispone de varios archivos de configuración que te permitiran modificar algunas cositas: por ejemplo, el archivo de configuración view.yml, donde podrás crear las meta etiquetas para tu aplicación, indicar a Symfony qué archivos css vas ha usar, que archivos javascript son necesarios para la aplicación, etc. Esto es un ejemplo de lo que he estado probando estas semanas:

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/13-View

default:
http_metas:
content-type: text/html

metas:
#title: Ciencias del Espacio v3.0 :: Tú web de astronomía
#description: Web de divulgación de astronomía y astronáutica con noticias y eventos espaciales además de contenidos didácticos.
#keywords: ciencias,espacio,astronomia,astronáutica,noticias,universo,eventos,lanzamientos,satélites,planetas,estrellas,galaxias,nebulosas,biografías,telescópios
#language: es
#robots: index, follow
verify-v1: ikvURKMrBQnoKtfM4fOUwGr657c2ZDdGQdkl1b7scLM=

stylesheets: [estilos_estandar.css]

javascripts: [mootools-core,mootools-more,funciones]

has_layout: true
layout: layout

Los parámetros has_layout y  layout le indican a Symfony si la aplicación tiene o no un diseño/plantilla/estructura y el nombre de esta.

El archivo settings.yml permite modificar la configuración de Symfony en cada uno de los entornos (desarrollo, producción, pruebas, etc) del proyecto, meramente te permite indicarle a Symfony que en el entorno de desarrollo, por ejemplo, active la caché, o el tipo de acción que debe utilizar con los caractéres especiales, etc. Será muy raro que modifiques este archivo así que pasamos al siguiente.

El archivo security.yml te permite indicar a Symfony si las comunicaciones entre el usuario y el servidor deben estar encriptadas, por defecto es false, así que a otro archivo.

El archivo routing.yml, muy importante, tendrás que modificarlo para que te funcione la aplicación. Te permite indicarle el módulo y la acción que debe iniciar la aplicación. Me explico mejor, ahí tienes que indicar el módulo y la acción que mostrarán al usuario la página principal de tu aplicación ¿Mejor?.

Un ejemplo:

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/10-Routing

# default rules
homepage:
url: /
param: { module: principal, action: index }

# generic rules
# please, remove them by adding more specific rules
default_index:
url: /:module
param: { action: index }

default:
url: /:module/:action/*

¿Ves donde pone homepage:? Pues justo debajo en el parámetro param hay que indicarle el módulo y la acción.

El archivo  frontendConfiguration.class.php te permite modificar la configuración o añadir otra distinta a través de php.

Los archivos filters.yml, factories.yml y cache.yml, aunque no los he usado mucho sirven para indicarle a Symfony los filtros que se van a usar, los nombres de algunas clases y el uso de la cache respectivamente.

El último archivo app.yml es donde podrás incluir variables globales y contantes, arrays de datos de usuario, por ejmplo, etc. Está dividido por entornos (desarrollo, producción, pruebas, etc), con lo que nos permite añadir variables durante el desarrollo que, muy probablemente, no sean necesarios o no queramos que vean o se utilicen en otro entornos.

Archivos de configuración para los módulos

Los módulos disponen de varios archivos para poder modificar la configuración general de la aplicación para adaptarla al módulo. La carpeta donde se encuentran estos archivos es /apps/frontend/mimodulo/config, esta carpeta no existe por defecto, por tanto tendrías que crearla una vez hayas generado el módulo. Los archivos de configuración que puedes utilizar en un módulo son los siguientes: generator.yml, module.yml, security.yml y view.yml. Todas las configuraciones que quieras ralizar en el módulo, también podrás realizarlas programando dentro de las acciones, para ello se utiliza la clase sfConfig que te permitirá tanto obtener (get) como dar (set) valores a las opciones de configuración. Un ejemplo:

// Obtiene una opción
opcion = sfConfig::get(‘nombre_opcion’, $valor_por_defecto);

// Crear una nueva opción
sfConfig::set(‘nombre_opcion’, $valor);

Esto último puedes verlo más detenidamente en el siguiente capítulo del libro: http://librosweb.es/symfony_1_2/capitulo5/accediendo_a_la_configuracion_desde_la_aplicacion.html.

Por último, existen varias formas de añadir constantes y arrays a los archivos de configuración, incluso añadir código php en ellos, para ello te dejo el capítulo del libro para que puedas acceder mas rápidamente: http://librosweb.es/symfony_1_2/capitulo5/trucos_para_los_archivos_de_configuracion.html

Salir de la versión móvil