HTML5 - CSS 2.x/3
PHP / MySQL
FORTH ...

Le formulaire de base avec ZF

La présentation de cette manière de faire des formulaires à l'aide de ZF pourra vous sembler complexe et certainement inutile. Pourquoi faire de manière compliquée avec ZF ce qui est faisable de manière classique avec HTML5?

Où déclarer les formulaires ZF

Le formulaire est à définir dans une classe qui doit être installée dans le dossier application/forms

création du formulaire dans le dossier application/forms

Prenons le cas d'un simple formulaire de contact. Le formulaire est destiné à un visiteur du site pour qu'il prenne contacte. Il faut quatre champs de saisie des données:

  1. adresse mail du visiteur du site
  2. titre ou sujet du mail
  3. contenu du message transmis par le visiteur
  4. un bouton de validation qui transmet le message

Exemple:

notre premier formulaire de contact

L'URL de contact sera de cette forme:

http://www.mon-site.com/contact/

En clair, nous avons un controleur contact et l'action index.

Nous allons donc définir le formulaire contact en créant le fichier:
  ContactForm.php

dans ce dossier application/forms/

Notre première classe de formulaire ZF

Voici ce que va contenir notre fichier ContactForm.php:

<?php
class Application_Form_ContactForm extends Zend_Form
{
    // Description du formulaire
    public function init() {
        $this->setMethod('POST');
        $this->setAttrib('id', 'myForm');
    }
   // ....suite du script....
}

Le bouton de soumission du formulaire

Dès à présent, nous allons apprendre à écrire de manière modulaire. Ici, nous allons définir une méthode privée pour le bouton de soumission du formulaire:

<?php
    private function _submitForm($value='envoyer') {
        $this->addElement('submit', 'submit', array('label' => $value));
    }

Nous avons utilisé la méthode addEelement de Zend_Form:

addElement Zend_Form addElement (string|Zend_Form_Element $element, [string $name = null], [array|Zend_Config $options = null])

Nous allons déja intégrer notre bouton de soumission de formulaire à notre formulaire en déclarant la méthode saisieContact:

<?php
    public function saisieContact() {
        $this->_submitForm();
    }

le champ de saise de l'adresse mail

Voyons maintenant comment définir le champ de saisie de l'adresse mail:

<?php
    private function _from() {
        // champ adresse mail
        $this->addElement('text', 'from', array(
            'label'     => 'votre adresse mail :',
        ));
    }

Ici on a défini une méthode privée _from qui rajoute un champ de type text et nommé from. On intègre ce champ à notre formulaire:

<?php
    public function saisieContact() {
        $this->_from();
        $this->_submitForm();
    }

En travaillant aisni, c'est à dire de façon très modulaire, on voit très rapidement qu'il est aisé de rajouter ou inhiber un champ dans le formulaire:

<?php
    public function saisieContact() {
        $this->_from();
        // $this->_submitForm();
    }

Ici, c'est le bouton de validation du formulaire qui a été mis en commentaire, donc inhibé.

Exploiter notre formulaire minimal

Voici le script complet de notre formulaire minimal:

<?php
class Application_Form_ContactForm extends Zend_Form
{
    // Description du formulaire
    public function init() {
        $this->setMethod('POST');
        $this->setAttrib('id', 'myForm');
    }
 
    private function _from() {
        // champ adresse mail
        $this->addElement('text', 'from', array(
            'label'     => 'votre adresse mail :',
        ));
    }
 
   private function _submitForm($value='envoyer') {
        $this->addElement('submit', 'submit', array('label' => $value));
    }
 
    public function saisieContact() {
        $this->_from();
        $this->_submitForm();
    }
}

Tous les articles sur ce thème