Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-06-2009 16:23:32

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Zend_Form: Utilisation des "callbacks" pour les décorateurs.

Bonjour à tous,

J'utilise la classe pour créer des formulaires. Et, dans la documentation relative aux décorateurs, j'ai découvert qu'il est possible d'utiliser des "callbacks".

URL de la doc :

http://framework.zend.com/manual/en/zen … ators.html
Voir: 23.7.1. Zend_Form_Decorator_Callback

Je m'arrache les cheveux dessus. Et je suis sur le point de jeter l'éponge.

Corrigez-moi si je me trompe :

L'utilisation de ce type de décorateur (Zend_Form_Decorator_Callback) particulier permet de remplacer le rendu associé à un élément d'un formulaire.

Le rendu par défaut du décorateur associé au label d'un élément de formulaire ressemble à :

Code:

<dt id="civilite-label"><label for="civilite" class="optional">Votre civilité</label></dt>

Avec ce type de décorateur, il est possible de modifier de rendu dans le code HTML du formulaire généré.

Est-ce que je me trompe?

J'ai essayé des tas de choses, mais rien ne fonctionne...

Par exemple (entre autres tests):

Code:

$selectCivitite = new Zend_Form_Element_Select('civilite');
$selectCivitite->setMultiOptions( array('F' => 'Femme', 'H' => 'Homme') );
$selectCivitite->setLabel('Votre civilité');
$selectCivitite->setDecorators(
array
(
    'ViewHelper',
    'Description',
    'Errors',
    array('HtmlTag',   array('tag' => 'dd')),
    array('callback',  array('callBacks', 'label')),
    array('Label',     array('tag' => 'dt')) 
)
);

Je suis découragé de comprendre comment utiliser ce type de décorateur...

Quelqu'un peut-il m'aider?

Merci,

Denis

Hors ligne

 

#2 06-06-2009 21:29:13

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Re: Zend_Form: Utilisation des "callbacks" pour les décorateurs.

Salut,

J'ai enfin trouvé la réponse à ma question après 2 jours de prise de tête. Mais pourquoi la documentation ZEND ne fournit-elle pas plus d'exemples sur l'utilisation des "décorateurs"?

Voici un exemple qui illustre la fonction de rappel :

Code:

class Util
{
    public static function label($content, $element, array $options)
    {
        $label  = '';
        $errors = array();
        $error  = 'Pas de méthode';
        
        
        if (method_exists($element, 'getLabel'))
        {
          $label = is_null($element->getLabel()) ? 'null' : $element->getLabel();
        }
        
        if (method_exists($element, 'getMessages'))
        {
          $errors = $element->getMessages();
          if (count($errors) > 0) { $error = $errors[0]; } else { $error = "Pas d'erreur"; } 
        }
        
        return "Label:$label<br>Error:$error<br>Form:<br>" . htmlentities($content) . "<br>";
    }
}

Note : Cette fonction n'est pas adaptée à une utilisation réelle dans un formulaire utilisé en production... La présentation est vraiment nulle. Mais elle montre le "principe d'utilisation".

Vous créez un objet de type "Zend_Form_Element". Par exemple :

Code:

$textPrenom = new Zend_Form_Element_Text('prenom');

Puis vous lui associez le décorateur de type "fonction de rappel" (Callback).

Code:

$textPrenom->addDecorator('Callback', array('callback' => array('Util', 'label')));

Et, bien sûr, vous ajouter cet élément au sein d'un formulaire.

Code:

$this->addElement($textPrenom);

Note : Évidemment, la classe associée à $this dérive de la classe Zend_Form.

Vous faites en sorte qu'il y ait une erreur attachée à l'élément (pour voir comment elle est traitée par la fonction de rappel). Par exemple (pour faire vite et simple) :

Code:

$textPrenom->addError('Erreur de saisie du prénom')

Et vous testez.

Bon, je n'ai pas trouvé le moindre exemple d'utilisation de ce type de décorateur sur le WEB. J'espère que celui-ci comblera ce vide. Espérons qu'il sera indexé par Google!

Bon, les formulaires "à la ZEND", c'est hyper souple... On peut tout faire. C'est vrai.

Mais bon... Une version allégée, pour faire des formulaires standards vite faits, bien faits, ne ferait pas de mal.

L'utilisation de la version "pleine" (full) pour créer des formulaires simples s'apparente à équiper un tricycle du tableau de bord d'un avion de ligne. Il y a des boutons et des fonctions partout, alors qu'un simple guidon ferait l'affaire;

A+

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages