válido para Symfony 1.3 y 1.4
Los requerimientos de la aplicación obligan a modificar dos modelos diferentes
(Product y ProductPhoto), por lo que la solución debe hacer uso de dos
formularios de Symfony (ProductForm y ProductPhotoForm). Afortunadamente,
el framework de formularios puede combinar fácilmente varios formularios en
uno solo mediante el método sfForm::embedForm(). En primer lugar, configura
ProductPhotoForm de forma independiente. En este ejemplo, se va a utilizar
el campo filename como campo para subir archivos:
// lib/form/doctrine/ProductPhotoForm.class.php public function configure() { $this->useFields(array('filename', 'caption')); $this->setWidget('filename', new sfWidgetFormInputFile()); $this->setValidator('filename', new sfValidatorFile(array( 'mime_types' => 'web_images', 'path' => sfConfig::get('sf_upload_dir').'/products', ))); }
Este formulario requiere, automáticamente pero por diferentes razones, tanto un
campo llamado caption como un campo llamado filename. El campo caption es
obligatorio porque su columna relacionada en el esquema de datos ha definido la
propiedad notnull con un valor true. El campo filename es obligatorio
porque un objeto validador establece por defecto el valor true en la opción
required.
sfForm::useFields() es una nueva función de Symfony 1.3 que permite
especificar exactamente qué campos del formulario se utilizan y en qué orden
deben visualizarse. Todos los demás campos que no sean vacíos se eliminan del
formulario.
Hasta ahora no hemos hecho más que la configuración habitual de los formularios. A continuación se combinan varios formularios en uno solo.
válido para Symfony 1.3 y 1.4