Ver índice de contenidos del libro

6.5. Personalizando la configuración

En el método JobeetJob::save() anterior se ha establecido directamente el número de días necesarios para que expire una oferta de trabajo. Seguramente es una buena idea hacer que el número de días sea configurable. El framework Symfony incluye un archivo de configuración llamado app.yml que se emplea para establecer las opciones de la aplicación. Este archivo en formato YAML puede contener cualquier información que se necesite para la aplicación:

# apps/frontend/config/app.yml
all:
  active_days: 30

Desde la aplicación, las opciones del archivo app.yml se pueden obtener mediante la clase sfConfig:

sfConfig::get('app_active_days')

El nombre de la opción se ha prefijado con app_ porque la clase sfConfig también permite obtener las opciones de configuración de Symfony, tal y como veremos más adelante.

Después de añadir la opción de configuración, podemos modificar el método save() para tenerla en cuenta:

public function save(PropelPDO $con = null)
{
  if ($this->isNew() && !$this->getExpiresAt())
  {
    $now = $this->getCreatedAt() ? $this->getCreatedAt('U') : time(); 
    $this->setExpiresAt($now + 86400 * sfConfig::get('app_active_days')); 
  }
 
  return parent::save($con);
}

El archivo de configuración app.yml es una buena manera de centralizar todas las opciones de configuración de la aplicación.

Por último, si vas a utilizar las mismas opciones de configuración para varias aplicaciones de un mismo proyecto, crea un archivo llamado app.yml en la carpeta config/ del proyecto para incluir todas las opciones compartidas.