Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-08-2009 16:36:20

Thiouzz
Membre
Date d'inscription: 10-08-2009
Messages: 10

[Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Je voulais créer une classe qui s'occupe de mes formulaire qui hérite de zend_Form

Voici le model :

Code:

class FormulaireAlbum extends Zend_Form {
    
    public function __construct($option = NULL) {
        
        parent::setName('album');
        $id = new Zend_Form_Element_Hidden('id');
        $artist = new Zend_Form_Element_Text('artist');
        $artist->setLabel('Artist')
                ->setRequired(true)
                ->addValidator('NotEmpty');        
                
        $title = new Zend_Form_Element_Text('title');
        $title->setLabel('Titre')
                ->setRequired(true)
                ->addValidator('NotEmpty');
        $this->addElement($title);        
                
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Ajouter');
        $submit->setAttrib('id', 'submitbutton');

        $this->addElement($id);
        $this->addElement($artist);
        $this->addElement($submit);
        
    }
}

dans le controlleur :

Code:

            
            $editForm = new FormulaireAlbum();
            $this->view->editForm = $editForm;

sauf que dans la vue quand je met echo $this->editForm; ça m'affiche rien !!

Quelqu'un à une idée, Merci.

Dernière modification par Mr.MoOx (12-08-2009 11:51:02)

Hors ligne

 

#2 10-08-2009 21:40:39

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Il faut des décorateurs. Ce sont eux qui gèrent le rendu visuel du formulaire.

Hors ligne

 

#3 11-08-2009 08:55:47

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Salut,
Dans ton controller $editForm est bien implémenté?
Peux-tu tester ta variable avec Zend_debug::Dump() dans ton controller?


A+ Guelo Super Star

Hors ligne

 

#4 11-08-2009 09:43:46

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Il faut des décorateurs. Ce sont eux qui gèrent le rendu visuel du formulaire.

Zend_Form en met par default s'ils ne sont pas précisés.

Hors ligne

 

#5 11-08-2009 11:28:45

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Justement, sauf que là, il a surchargé le contructeur de Zend_Form donc il a supprimé tout ce qui définissait les décorateur par défaut et toute la configuration de base de la classe. Il suffit de voir le constructeur de Zend_Form pour s'en convaincre :

Code:

    /**
     * Constructor
     *
     * Registers form view helper as decorator
     * 
     * @param mixed $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        } elseif ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }

        // Extensions...
        $this->init();

        $this->loadDefaultDecorators();
    }

Donc il faut soit appeler le constructeur parent avec les paramètres qui vont bien.

Code:

parent::__construct(...);

Ou alors, tu n'utilises pas le constructeur pour créer ton formulaire mais la méthode init() dans laquelle tu place ton code. Ce qui est à mon avis une bien meilleur manière de faire à moins de vouloir modifier le comportement du constructeur. La méthode init() est faite pour étendre Zend_Form.

Egalement, ça :

Code:

parent::setName(...);

à replacer par :

Code:

$this->setName(...);

A moins de vouloir explicitement appeler la méthode de la classe parent. Ce qui est à mon avis n'est pas une bonne idée.

A+


Quelques tutoriaux Zend Framework !

Hors ligne

 

#6 11-08-2009 11:36:55

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Ah ouais en effet.
J'ai lu trop vite et j'ai imaginé le "parent::__construct(...);" smile
C'est sur que c'est mieux avec.

Hors ligne

 

#7 12-08-2009 11:42:17

Thiouzz
Membre
Date d'inscription: 10-08-2009
Messages: 10

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Thx every body,

oui, il a fallu que j'ajoute

Code:

$this->loadDefaultDecorators();

à la classe.

Hors ligne

 

#8 12-08-2009 11:46:45

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

Ce qui est toujours une très mauvaise manière de faire... smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#9 12-08-2009 12:08:43

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [Résolu] [Zend_Form] Rendu vide : Absence de décorateurs

wink

Je pense que ton code pourrai fonctionner comme ça:

Code:

 public function __construct($option = NULL) {

        parent::__construct($option);

        parent::setName('album');

        $id = new Zend_Form_Element_Hidden('id');

        $artist = new Zend_Form_Element_Text('artist');
        $artist->setLabel('Artist')
                ->setRequired(true)
                ->addValidator('NotEmpty');        
                
        $title = new Zend_Form_Element_Text('title');
        $title->setLabel('Titre')
                ->setRequired(true)
                ->addValidator('NotEmpty');
             
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Ajouter');
        $submit->setAttrib('id', 'submitbutton');

$this->addElements(array( $id,$artist, $title,$submit));
        
    }
}

Fuse

Dernière modification par _Fuse_ (12-08-2009 12:09:10)

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