Configuración básica del formulario

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.

Nota

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.

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

Aprendiendo más haciendo los ejemplos

Embebiendo formularios
Los contenidos originales de este sitio están bajo una licencia de Creative Commons. Las traducciones disponen cada una de su propia licencia.