Pour la reprise des tutoriels, nous allons voir comment créer un formulaire d’authentification via le système de ViewScripts.

Les ViewScripts, c’est quoi? Et bien, c’est une vue dédiée au formulaire, c’est elle qui va permettre de faire la partie design de votre formulaire sans devoir passer par les décorateurs.

Nous allons donc reprendre le formulaire d’identification de notre turoriel afin de lui faire utiliser les viewScripts :

Pour ce faire, reprenez la classe du formulaire suivante (la complète du tutoriel sur l’identification) :

class Admin_Forms_Identification extends Zend_Form { 
    public function init() { 
      $this->setMethod('post') ->setName('identification');

      $login = new Zend_Form_Element_Text('login');
      $login->setRequired(TRUE)
            ->addFilters(array('StringTrim', 'StripTags'))
            ->addValidators(array( array('validator' => 'StringLength', 'options' => array(0, 20))))
            ->getDecorator('label')->setOption('tag', null);

      $passwd = new Zend_Form_Element_Password('password');
      $passwd->setRequired(TRUE)
             ->addFilters(array('StringTrim', 'StripTags'))
             ->addValidators(array( array('validator' => 'StringLength', 'options' => array(0, 20))))
             ->getDecorator('label')->setOption('tag', null);

      $submit = new Zend_Form_Element_Submit('submit');
      $submit->setIgnore(true);

      $this->addElement($login);
      $this->addElement($passwd);
      $this->addElement($submit);

      $this->setDecorators(array(
          array('ViewScript', array('viewScript' => 'index/forms/identification.phtml'))
      ));
  }
}

Ici, la ligne qui nous intéresse est la suivante :

$this->setDecorators(array(
    array('ViewScript', array(
        'viewScript' => 'index/forms/identification.phtml')
    )
));

On indique qu’on met un décorateur global à notre formulaire et il se situe dans /application/modules/admin/views/index/forms/. Le décorater en question contient la vue propre à notre formulaire :

  <form action="<?php echo $this->escape($this->element->getAction()); ?>"
        method="<?php echo $this->escape($this->element->getMethod()); ?>"
        class="formident"></p>
        <p>
         Vous devez vous identifier pour accéder au backoffice.
        </p>
        <div>
              <span class="labelform"><label>Login</label></span><br />
              <span><?php echo $this->element->login->renderViewHelper(); ?></span>
        </div>
        <div>
              <span class="labelform"><label>Mot de Passe :</label></span><br />
              <span><?php echo $this->element->password->renderViewHelper(); ?></span>
        </div>
        <p><?php echo $this->element->submit->renderViewHelper(); ?></p>
  </form>

Comme vous le voyez, on habille notre formulaire comme l’on veut.

Afin d’appeler l’élément que l’on souhaite sans utiliser les décorateurs par défaut, nous utilisons la fonction renderViewHelper().

Maintenant, il ne vous reste plus qu’à utiliser un peu de CSS et vous pouvez obtenir le formulaire dont vous rêvez.