Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-04-2009 16:59:53

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

[ZF 1.7] Zend_Form_Decorator

Bonjour,
J'ai beaucoup de mal à comprendre les décorators. J'essai donc de m'aider avec la documentation ainsi que de leur classe composite. Malheureusement je ne trouve pas le moyen de lier cette classe à mes formulaires.

J'ai donc mis la classe composite dans ma librairie personnelle.

<?php
class Apr_Decorator_Composite extends Zend_Form_Decorator_Abstract
{
    public function buildLabel()
    {
        $element = $this->getElement();
        $label = $element->getLabel();
        if ($translator = $element->getTranslator()) {
            $label = $translator->translate($label);
        }
        if ($element->isRequired()) {
            $label .= '*';
        }
        $label .= ':';
        return $element->getView()
                       ->formLabel($element->getName(), $label);
    }

[...]

?>

Dans mes classes formulaire, j'ajoute :

class Apr_Form_Rubrique extends Zend_Form
{
    /**
     * Initialisation du formulaire (méthode obligatoire)
     */
    public function init()
    {
        $familleModel = new TFamilles();
        $familles = $familleModel->fetchAll();
        $famillesTab = array();
        $famillesTab[""] = "Choisir une famille";
        foreach ($familles as $famille)
        {
            $famillesTab[$famille->idFamille] = $famille->libelle;
        }
       
        $this->setDecorators(array("Apr_Decorator_Composite"));

[...]

Par avance, MERCI pour l'aide.

Hors ligne

 

#2 15-04-2009 10:18:08

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [ZF 1.7] Zend_Form_Decorator

Je suis vraiment perdu en ce qui concerne les decorators.
Je cherche à générer le code html suivant :

<div class="ligne">
<div class="label"><label for ="nom">Nom :</label></div>
<div class="champ"><input type="text" id="nom" name="nom" value="" /></div>
</div>

Si quelqu'un peu m'aider.
Merci.

Hors ligne

 

#3 15-04-2009 17:23:51

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [ZF 1.7] Zend_Form_Decorator

Bonjour,

j'ai la classe suivante "Apr_Decorator_Composite" qui est un décorator (Classe reprise dans la documentation du zend_Framework).

J'essai de la lien à un élément de mon formulaire : $libelle->setDecorators(array('Composite'));

Mais j'ai l'erreur suivant :

Warning: Exception caught by form: Plugin by name 'Composite' was not found in the registry; used paths: Zend_Form_Decorator_: Zend/Form/Decorator/:Zend/Form/Decorator/ Stack Trace: #0 /home/library/Zend/Form/Element.php(1702): Zend_Loader_PluginLoader->load('Composite') #1 /home/library/Zend/Form/Element.php(2061):


Si quelqu'un peut m'aider.
Par avance merci.

Hors ligne

 

#4 15-04-2009 20:35:25

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [ZF 1.7] Zend_Form_Decorator

Pas besoin d'un composite pour ca.

Déja, nettoire ton code HTML, les div "label" et "champ" ne servent à rien. Avec css et envutellement des class ton élement label et input devrait faire l'affaire :

Code:

<div class="ligne">
<label for ="nom" class="label">Nom :</label>
<input type="text" id="nom" name="nom" value="" class="label"/>
</div>

Ensuite, on part de l'élément pour aller vers "l'extérieur"
D'abord, le décorateur viewhelper, c'est lui qui générer la balise input. On lui adjoint un attribut class => label
Ensuite, vient le décorateur label, la aussi, on lui adjoint l'attribut class => "label"
Ensuite, pour entourer le tout, un décorateur htmlTag avec l'attribut class => "ligne"


----
Gruiiik !

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