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

MkFramework Discussion :

Ajout de la fonction getSelectGroup à plugin_form


Sujet :

MkFramework

  1. #1
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut Ajout de la fonction getSelectGroup à plugin_form
    Bonjour,

    Pour les besoins de mon projet, j'ai ajouté la fonction suivante au plugin_form :

    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
     
     
           /**
    	* retourne un champ menu deroulant sectionne en groupe
    	* @access public
    	* @param string $sName nom du champ
    	* @param array @tValue1 1er tableau de valeurs du menu deroulant
            * @param array @tValue2 2nd tableau de valeurs du menu deroulant
             * @param string $sLabel1 nom du 1er groupe
             * @param string $sLabel2 nom du 2nd groupe
    	* @param array $tOption options du champ
    	*/
    public function getSelectGroup($sName,$tValue1,$tValue2,$sLabel1,$sLabel2,$tOption=null){
     
    		$sCurrentValue=$this->getValue($sName);
                    $bSelected=false;
     
    		$sHtml=null;
    		$sHtml.='<select name="'.$sName.'" '.$this->getOption($tOption).'><optgroup label='.$sLabel1.'>';
    			foreach($tValue1 as $sValue => $sLabel){
    				$sHtml.='<option ';
    				if($sValue==$sCurrentValue){
    					$sHtml.=' selected="selected"';
                                            $bSelected=true;
    				}
    				$sHtml.=' value="'.$sValue.'">'.$sLabel.'</option>';
    			}
                    $sHtml .='<optgroup label='.$sLabel2.'>';
                           foreach($tValue2 as $sValue => $sLabel){
    				$sHtml.='<option ';
    				if(($sValue==$sCurrentValue)and !$bSelected){
    					$sHtml.=' selected="selected"';
    				}
    				$sHtml.=' value="'.$sValue.'">'.$sLabel.'</option>';
    			}
    		$sHtml.='</optgroup></select>';
    		$sHtml.=$this->getMessage($sName);
    		return $sHtml;
     
    	}
    Le but de ce select était de proposer dans le premier groupe les objets associés à un lieu et dans le second groupe l'ensemble des objets tout lieu confondu.
    En tout cas Bravo à Michael, car ce n'est pas évident de trouver les bon mécanisme à mettre en oeuvre car beaucoup de choix s'offre à lui quand il doit choisir comment va se présenter une focntion.

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    Lut,
    je regarde ça ASAP, c'est toi/vous qui a proposé sur le github je suppose

    Merci de la contribution
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut Update de la Fonction
    Le même résultat mais avec une mise en production plus propre grâce au tableau multi :

    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
     
    /**
    	* retourne un champ menu deroulant sectionne en groupe
    	* @access public
    	* @param string $sName nom du champ
    	* @param array $tArrayOfValue tableau multidimentionnel [Label]=>[Index]=>'Option'
    	* @param array $tOption options du champ
    	*/
     
            public function getSelectGroup($sName,$tArrayOfValue,$tOption=null){
    		$sCurrentValue=$this->getValue($sName);
                    $bSelected=false;
                    $i=0;
    		$sHtml=null;
    		$sHtml.='<select name="'.$sName.'" '.$this->getOption($tOption).'>';
                    foreach ($tArrayOfValue as $key => $tValue){                    
                        $sHtml.='<optgroup label='.$key.'>';
                        foreach($tValue as $sValue => $sLabel){
                            $sHtml.='<option ';
                            if(($sValue==$sCurrentValue)and !$bSelected){
                                    $sHtml.=' selected="selected"';
                                    $bSelected=true;
                            }
                            $sHtml.=' value="'.$sValue.'">'.$sLabel.'</option>';
                        }
                        $i++;
                        $sHtml.='</optgroup>';
                    }
                    $sHtml.='</select>';
    		$sHtml.=$this->getMessage($sName);
    		return $sHtml;
    	}



    main.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [...]
    $tTableau1=array('Option11','Option12','Option13','Option14');
    $tTableau2=array('Option21','Option22','Option23','Option24');
     
    $tGroupSelect['Label1']= $tTableau1;
    $tGroupSelect['Label2']= $tTableau2;                        
    $oView->tGroupSelect=$tGroupSelect;
    [...]
    aspect.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [...]
    <?php echo $oForm->getSelectGroups('ChoiceSimple', $this->tGroupSelect); ?>
    <?php echo $oForm->getSelectGroup('ChoiceMultiple', $this->tGroupSelect, array('multiple'=>'multiple', 'size'=>"13")); ?>
    [...]
    Nom : Annotation 2020-04-02 150721.png
Affichages : 314
Taille : 9,3 Ko

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    Ah làa c'est encore mieux

    je vais voir pour l'intégrer ASAP

    merci beaucoup de la contribution
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    J'ai intégré votre méthode sur le projet, je vais voir pour le deployer sur les autres sous projets

    pour info/rappel le mk est desormais distribué sous forme de package

    Le framework seul (juste la lib, par exemple pouir livrer en prod, ou integrer via composer

    le builder: juste l'interface de generation de code

    Le package qui contient le tout pour debuter

    Il y a aussi un projet "squelette" pour pouvoir créer un projet juste avec composer

    La j'ai mis sur mkframework, qui est l'ancien dépot, je vais voir pour mettre le reste demain

    http://mkframework.com/telecharger.html
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  6. #6
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Salut,

    De rien pour la contribution.

    J'ai une autre mouture de cette fonction car dans la précédente je ne gère pas l'option Multiple du Input Select.

    Celle-ci le gère, mais ne me plait pas pour la mise à disposition car je ne trouve pas le paramètre $tArrayMultiValues facile d'usage.
    Ce n'est qu'un tableau contenant les ID des options sélectionnées du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    array(3) {
      [3]=>
      string(1) "3"
      [21]=>
      string(2) "21"
      [73]=>
      string(2) "73"
    }
    Mais le fait qu'il se trouve après le $tOption est risqué. Car cela oblige l'utilisateur a déclarer une array vide s'il ne veut pas d'options.
    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
     
     
     
     
    /**
    	* retourne un champ menu deroulant sectionne en groupe
    	* @access public
    	* @param string $sName nom du champ
    	* @param array $tArrayOfValue tableau multidimentionnel [Label]=>[Index]=>'Option'
    	* @param array $tOption options du champ
            * @param array $tArrayMultiValues Valeurs selectionnees pour un select multiple 
    	*/
     
            public function getSelectGroup($sName,$tArrayOfValue,$tOption=null,$tArrayMultiValues=null){
    		$sCurrentValue=$this->getValue($sName);
                    $bSelected=false;
    		$sHtml=null;
                    $sOptionMultiple=null;
                    if($tArrayMultiValues){
                        $sOptionMultiple="multiple";
                    }
     
    		$sHtml.='<select name="'.$sName.'" '.$this->getOption($tOption).' '.$sOptionMultiple.' >';
                    foreach ($tArrayOfValue as $key => $tValue){                    
                        $sHtml.='<optgroup label='.$key.'>';
                        foreach($tValue as $sValue => $sLabel){
                            $sHtml.='<option ';
                            if($tArrayMultiValues){
                                if(array_key_exists($sValue,$tArrayMultiValues)){
                                    $sHtml.=' selected="selected"';
                                }
                            }elseif(($sValue==$sCurrentValue)and !$bSelected){
                                    $sHtml.=' selected="selected"';
                                    $bSelected=true;
                            }
                            $sHtml.=' value="'.$sValue.'">'.$sLabel.'</option>';
                        }
                        $sHtml.='</optgroup>';
                    }
                    $sHtml.='</select>';
    		$sHtml.=$this->getMessage($sName);
    		return $sHtml;
    	}
    Je te laisse voir ce que tu souhaites en faire.

    l'appel se fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oForm->getSelectGroup('Element[]', $this->tModuleMethode, array('multiple'=>'multiple', 'size'=>"13"),$this->tRights);
    Je suis sûr que l'on peut se passer de $tArrayMultiValues mais ça demande un petit peu de réflexion sur la fonction getValue() de plugin_form.php

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    Bonsoir,
    j'ai pas eu le temps de regarder comment gérer une selection mutliple

    en tout cas ce n'est pas un paramètre à passer: les valeurs postées sont soumise au plugin_form et il s'appuie dessus pour pre-remplir/selctionner les valeurs

    on le voit ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$sCurrentValue=$this->getValue($sName);
    on récupère la valeur du champ
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    Pour info, je viens d emettre à jour les autres prepos avec cette méthode

    et le mentionner sur le site, merci encore pour cette contribution
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout dynamique de fonction à un élément (js non intrusif)
    Par waldo2188 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/11/2007, 13h20
  2. Réponses: 4
    Dernier message: 30/08/2007, 15h42
  3. Réponses: 5
    Dernier message: 21/02/2007, 23h20
  4. Réponses: 2
    Dernier message: 16/11/2006, 15h00
  5. Réponses: 5
    Dernier message: 09/07/2006, 18h14

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