déterminer onglet actif selon groupe de page statique

bonjour, j'essaye de récupérer le groupe actif avec $plxShow->staticGroup()
pour l'utiliser dans un menu déroulant css sur header.php façon :
[== PHP ==]
$group=$plxShow->staticGroup();
$class = ($group=="Accueil") ? 'class="active" ' : "";

l'affichage étant de cette forme :
[== HTML ==]
<div id="menu" class="content menu">
        <ul>
            <li <?php echo $class; ?>	 		 
	        ><a href="index.php">Accueil</a>
				<ul>
					<li><a href="index.php?static15">Cahier des charges</a></li>
j'ai essayé :
- $group=(string) staticGroup();
- $group= settype($group, "string");
- $group ="$group";
- $group ="'.$group.'";
...pas moyen d'obtenir ma condition, bref, je patauge !
Si une bonne âme venait à passer par là, merci de me sortir de la gadoue !

Réponses

  • lgnaplgnap Member
    Si tu as vérifié avec un var_dump() ou autre print_r que le call à la fonction te renvoie bien ce que tu attends, il vaut mieux utiliser strcmp(); comme fonction pour comparer deux strings ;)
  • paysan hardipaysan hardi Member
    mai 2013 modifié
    merci Ignap de m'aider à comprendre ;)
    je gardais print_r pour les tableaux, je pensais naïvement pouvoir nettoyer mon $group des "attributs" superflus avec une fonction

    effectivement var_dump($plxShow->staticGroup()); affiche null et mon echo $group est vide...même si $plxShow m'affiche le staticGroup() actif
    j'imagine que c'est une sorcellerie dûe à la POO...alors que j'en suis resté au basic V2 du commodore64...mais j'apprends doucement
    Je retiens néanmoins la fonction :
    [== PHP ==]
     $class = (strcmp($group, "Accueil")!=0) ? "" : 'class="active"' ;
    
    J'ai choisi $plxShow car déjà existant sur ma page (donc pas "d'instance" à créer,etc), si le staticGroup() actif s'affiche à l'écran, c'est bien que l'info passe par là, comment pourrais-je alors la stocker dans ma variable ?
    Je me permet de reposer la question car j'imagine l'exemple transposable sur tous les "appels de fonctions par une classe" (cette dernière phrase étant le pur produit de mon imagination :cool: )...ceci dit la POO faut s'y mettre !
  • danielsandanielsan Member
    mai 2013 modifié
    Peut-être peux-tu t'instiprer de l'astuce du lapin bleu : Menu listant les statics classés par groupe ?

    Cordialement,
  • paysan hardipaysan hardi Member
    mai 2013 modifié
    merci vous 2
    j'ai trouvé une solution qui tourne sur mon tracteur :
    [== PHP ==]
    public function staticGroupClass($onglet) { 
    		$Class = plxUtils::strCheck($this->plxMotor->aStats[ $this->plxMotor->cible ]['group']);
    		$active = ($Class==$onglet) ? 'class="active"' : "";
    		return $active;
    	}
    
    et j'affiche avec :
    [== HTML ==]
    <li <?php echo $plxShow->staticGroupClass("Accueil"); ?> 	
         ><a href="index.php">Accueil</a>
    
    ceci dit ça fait "branchement sauvage" sur class.plx.show.php (j'ai pas encore testé de le déplacer) et il y a surement de quoi faire rire ceux dont c'est le métier
    en cas d'évolution, faudra en plus le retaper...maintenant j'ai pas encore les poils pour faire un plugin :D
    en fait, je voulais pas trop faire de ligne pour 4 menus et 8 sous-menus

    @danielsan : comment tu définis tes sous menus ?

    [edit] si personne n'a de meilleure idée je marquerai résolu, merci ! [/edit]
  • lgnaplgnap Member
    paysan hardi a écrit:
    merci Ignap de m'aider à comprendre ;)
    C'est LGnap :P mais c pas grave tt le monde fait la faute mais je te grogne qd mm pour le principe GRRRRRR :-D
    paysan hardi a écrit:
    J'ai choisi $plxShow car déjà existant sur ma page (donc pas "d'instance" à créer,etc), si le staticGroup() actif s'affiche à l'écran, c'est bien que l'info passe par là, comment pourrais-je alors la stocker dans ma variable ?
    Je me permet de reposer la question car j'imagine l'exemple transposable sur tous les "appels de fonctions par une classe" (cette dernière phrase étant le pur produit de mon imagination :cool: )...ceci dit la POO faut s'y mettre !

    J'ai pas été voir la fonction (donc méfie toi je me plante peut être), j'essaierai de verifier mes dires ASAP.
    Mais dans ton cas je pense que la fonction AFFICHE (echo donc) au lieu de te renvoyer la valeur désirée, et c'est vrai que vu le nom de la classe (plxShow) c'est sa tâche !

    Deux idées pour toi pour la suite :
    [list=*]
    [*]utiliser les fonctions ob_start & ob_get_clean autour de ta fonction pour capturer sa sortie et en faire ce que tu veux (attention c'est vraiment pas une bonne manière de faire, c'est très moche (vraiment du quick & very dirty) et je me tape 30 fois sur les doigts de te proposer ça)[/*]
    [*]créer une fonction dans plxShow qui te renverrait la valeur au lieu de l'afficher, et pour ne pas dupliquer le code faire un echo subFonction() dans la fonction staticGroup() mais ici tu donnes une tâche qui n'est pas d'affichage à une classe qui est censé afficher des choses (pas super propre non plus)[/*]
    [/list]

    Le mieux c'est de jouer avec le plxMotor, après tout c'est à lui de faire ça ! Mais là j'ai pas le temps de me pencher sur ton cas pour l'instant =D
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut
    Tu peux accèder au nom du groupe par
    $plxShow->plxMotor->aStats[$plxShow->plxMotor->cible ]['group']
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • paysan hardipaysan hardi Member
    mai 2013 modifié
    merci bcp de votre attention
    je vais tester la solution de Steph, ça m'ouvrira p-e d'autres horizons, chuis un peu perdu sans les références table/champ

    @Steph : beau bébé le pluxml, il ne pourra que grandir !
    bonne journée à tous :)

    [résolu] j'ai cherché mais pas trouvé le bouton, pas possible d'éditer le titre pour le rajouter, merci les modos de faire mon boulot :P [/résolu]
Connectez-vous ou Inscrivez-vous pour répondre.