Bonjour,

Pour l'enregistrement de différents types fiches, j'ai besoin de formulaires (normal quoi ^^). Cependant, il existe une partie commune à tous ces formulaires, à savoir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
class FormulaireItem extends Zend_Form
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        $this->setName('item');
 
        $id = new Zend_Form_Element_Hidden('id');
 
        $titre = new Zend_Form_Element_Text('titre');
        $titre->setLabel('Titre')
        ->setRequired(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->addValidator('stringLength', false, array('min' => 3, 
                                                    'max' => 40,
                                                    'messages' => array(
                                                    'stringLengthTooShort' => 'Le titre doit faire au moins %min% caractères',
                                                    'stringLengthTooLong' => 'Le titre doit faire au maximum %max% caractères'
                                                    )));
 
        $type = new Zend_Form_Element_Select('type');
        $type->addMultiOptions(array(''=>'Choisir un type','image'=>'Image','site'=>'Site','video'=>'Vidéo','article'=>'Article','dossier'=>'Dossier'));
        $type->setLabel('Type')
        ->setRequired(true)
        ->addValidator('NotEmpty',false,array('messages' => array( 'isEmpty' =>'Merci de choisir un type')));
 
        $coeur = new Zend_Form_Element_Radio('coeur');
        $coeur->setRequired(true);
        $coeur->setLabel('Coup de coeur');
        $coeur->addMultiOptions(array('oui'=>'Oui','non'=>'Non'));
        $coeur->setValue('non');
 
        $explication = new Zend_Form_Element_Textarea('explication');
        $explication->setLabel('Explication');
 
        $tag = new Zend_Form_Element_Textarea('tag');
        $tag->setLabel('Tags')
            ->setRequired(true)
            ->addValidator('NotEmpty',false,array('messages' => array( 'isEmpty' =>'Vous devez attribuer des tags de recherche pour l\'élément')));
 
        /*
         * 
         *
         * 

        $reset = new Zend_Form_Element_Reset('reset');
        $reset->setLabel('Effacer');

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('id', 'submitbutton');
        * 
        $this->addElements(array($id, $titre, $type, $coeur, $explication, $reset, $submit));
        */
    }
}
Je voudrais donc savoir si il été possible de faire hériter un formulaire ImageFormulaireItem par exemple, qui aurait donc comme élément ceux de la classe mère FormulaireItem et ceux spécifiques défini dans la classe elle-même.

Je me rends bien compte qu'il faudrait utiliser la méthode addElements() dans la classe fille, ou sinon quelque chose pour définir l'ordre d'apparition des éléments car je me vois mal avec un bouton d'envoyer au milieu du formulaire :/

Plus précisement ce qui me perturbe c'est ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    public function __construct($options = null)
    {
        parent::__construct($options);
        $this->setName('item');
...
Je ne sais pas trop à quoi ça sert (j'ai récupéré la base du formulaire dans un tuto) ni comment le gérer avec l'héritage ;

Merci de vos lanternes