válido para Symfony 1.3 y 1.4
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.
válido para Symfony 1.3 y 1.4