Aplicando la configuración YAML

La forma más sencilla de aplicar esta configuración YAML a cada formulario consiste en cargarla en un array y después recorrer cada configuración:

public function enhance(sfForm $form)
{
  $config = sfYaml::load(sfConfig::get('sf_config_dir').'/forms.yml');
 
  foreach ($config as $class => $fieldConfigs)
  {
    if ($form instanceof $class)
    {
      foreach ($fieldConfigs as $fieldName => $fieldConfig)
      {
        if (isset($form[$fieldName]))
        {
          if (isset($fieldConfig['label']))
          {
            $form->getWidget($fieldName)->setLabel($fieldConfig['label']);
          }
 
          if (isset($fieldConfig['attributes']))
          {
            $form->getWidget($fieldName)->setAttributes(array_merge(
              $form->getWidget($fieldName)->getAttributes(),
              $fieldConfig['attributes']
            ));
          }
 
          if (isset($fieldConfig['errors']))
          {
            foreach ($fieldConfig['errors'] as $code => $msg)
            {
              $form->getValidator($fieldName)->setMessage($code, $msg);
            }
          }
        }
      }
    }
  }
}

Esta solución tiene varios problemas. En primer lugar, los archivos YAML se leen desde el sistema de archivos y se cargan en un objeto de tipo sfYaml cada vez que se aplica la configuración a un formulario. Para mejorar el rendimiento de la aplicación deberíamos evitar tantos accesos al sistema de archivos. En segundo lugar, el rendimiento también se verá penalizado por la cantidad de bucles y condiciones del código. La solución de estos dos problemas consiste en utilizar la cache de configuración de Symfony.

Puedes sugerir, comentar, criticar e informar de errores en contacto (arroba) librosweb.es

Filtrando las variables de la plantilla

La cache de configuración
Los contenidos originales de este sitio están bajo una licencia de Creative Commons. Las traducciones disponen cada una de su propia licencia.