IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Héritage et formulaire


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut Héritage et formulaire
    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

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->setName('item');
    cela redéfinis l'attribut name du formulaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Ca, je m'en douté un peu :p
    Je dois donc définir le nom dans la classe fille ou la mère ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent::__construct($options);
    Sert à quoi ? Mon hypothèse est que cela ajoute au constructeur fils le constructeur du parent.

    Donc si je fais un héritage de formulaire, je dois encore ajouter cette ligne, vrai ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il est évident que si tu as une classe parent qui prend des paramètres dans son constructeur , il faut faire appel à ce constructeur(parent), pour lui passer les options.

Discussions similaires

  1. [2.x] Héritage de formulaire et "useFields"
    Par damiensan dans le forum Symfony
    Réponses: 1
    Dernier message: 22/08/2013, 19h06
  2. Héritage de formulaires WPF
    Par fterf dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 04/03/2009, 17h02
  3. Problème concepteur de vues après héritage formulaire
    Par Plio dans le forum Visual Studio
    Réponses: 2
    Dernier message: 21/10/2007, 16h19
  4. héritage de formulaire avec VB Express
    Par ec dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/01/2007, 20h18
  5. [C#] Héritage de formulaire
    Par Gold.strike dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/09/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo