Ver índice de contenidos del libro

10.2. Formularios

Un formulario de Symfony es una clase formada por campos de formulario. Cada campo dispone de un nombre, un validador y un widget. A continuación se muestra cómo se puede crear un formulario de contacto sencillo llamado ContactForm:

class ContactForm extends sfForm
{
  public function configure()
  {
    $this->setWidgets(array(
      'email'   => new sfWidgetFormInput(),
      'message' => new sfWidgetFormTextarea(),
    ));
 
    $this->setValidators(array(
      'email'   => new sfValidatorEmail(),
      'message' => new sfValidatorString(array('max_length' => 255)),
    ));
  }
}

Los campos del formulario se configuran en el método configure() mediante los métodos setValidators() y setWidgets().

Nota El framework de formularios incluye muchos widgets y validadores. La API de Symfony describe cada uno detalladamente, con todas sus opciones, errores y mensajes de error por defecto.

Los nombres de las clases de los widgets y validadores son muy explícitos: el campo email se representará mediante una etiqueta <input> de HTML (sfWidgetFormInput) y se validará que su valor sea una dirección de correo electrónico válida (sfValidatorEmail). El campo message se representará como una etiqueta <textarea> (sfWidgetFormTextarea) y se validará que su valor sea una cadena de texto de no más de 255 caracteres de longitud (sfValidatorString).

Por defecto todos los campos del formulario son obligatorios, ya que el valor por defecto de la opción required es true. Por tanto, la validación anterior del campo email es equivalente a new sfValidatorEmail(array('required' => true)).

Nota También es posible combinar dos formularios mediante el método mergeForm() o incluir un formulario dentro de otro mediante el método embedForm():

$this->mergeForm(new AnotherForm());
$this->embedForm('name', new AnotherForm());