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 confirmé
    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.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  2. #2
    Rédacteur

    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 confirmé
    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")); ?>
    [...]


    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  4. #4
    Rédacteur

    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

    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