A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

7.9. Ejemplo: Crear el Modelo del Formulario de Contacto

Ahora que sabemos como colocar el nombre del formulario, la acción y los métodos para los atributos y como agregar campos (elementos) al formulario vamos a completar la clase modelo para el formulario de contacto que usamos en el ejemplo anterior.

Como sabemos las clases de modelo para el módulo Application están dentro del namespace Application\Form. Así, debemos crear el archivo ContactForm.php dentro de la carpeta Form que esta dentro de la carpeta src del módulo Application (figura 7.14).

Figura 7.14. Carpeta Form Figura 7.14. Carpeta Form

Tendremos dos métodos en nuestra clase formulario:

Colocamos la lógica de creación de campos dentro del método privado addElements() para tener una mejor estructura en el código del modelo del formulario.

El código de la clase ContactForm se muestra abajo:

<?php
namespace Application\Form;

use Zend\Form\Form;

/**
 * This form is used to collect user feedback data like user E-mail,
 * message subject and text.
 */
class ContactForm extends Form
{
  // Constructor.
  public function __construct()
  {
    // Define form name
    parent::__construct('contact-form');

    // Set POST method for this form
    $this->setAttribute('method', 'post');

    // Add form elements
    $this->addElements();
  }

  // This method adds elements to form (input fields and
  // submit button).
  private function addElements()
  {
    // Add "email" field
    $this->add([
	        'type'  => 'text',
            'name' => 'email',
            'attributes' => [
                'id' => 'email'
            ],
            'options' => [
                'label' => 'Your E-mail',
            ],
        ]);

    // Add "subject" field
    $this->add([
            'type'  => 'text',
            'name' => 'subject',
            'attributes' => [
              'id' => 'subject'
            ],
            'options' => [
                'label' => 'Subject',
            ],
        ]);

    // Add "body" field
    $this->add([
            'type'  => 'text',
            'name' => 'body',
            'attributes' => [
			  'id' => 'body'
            ],
            'options' => [
                'label' => 'Message Body',
            ],
        ]);

    // Add the submit button
    $this->add([
            'type'  => 'submit',
            'name' => 'submit',
            'attributes' => [
                'value' => 'Submit',
            ],
        ]);
    }
}

Arriba en la línea 10 definimos la clase ContactForm que extiende a la clase base Form.

En las líneas 13-23 tenemos el método constructor. Él llama al constructor de la clase base (línea 16) y pasa el nombre del formulario como su argumento ("contact-form"). En la línea 19, el método setAttribute() de la clase base se llama para colocar el nombre del método para el formulario, en este caso colocamos el método POST.

En la línea 22 se llama al método privado addElements() que es quien realmente agrega los elementos al formulario. El código del método addElements() está entre las líneas 27-73. Para agregar elementos al formulario llamamos al método add() que provee la clase base. Este método acepta un solo argumento, un arreglo que contiene la configuración del elemento. Agregamos cuatro campos: el email, el subject, el body y el campo submit.

En la figura 7.15 podemos ver una representación gráfica esquemática del modelo de formulario que hemos creado.

Figura 7.15. El modelo del formulario de contacto y sus elementos Figura 7.15. El modelo del formulario de contacto y sus elementos


Top