Bonjour!
Bon, je post très rarement sur des forums, trouvant la plupart du temps moi même les solutions à mes problèmes...mais...là...je sèche. (3 jours que je bloc là dessus....)
En fait voilà :
Je monte une classe de gestion d'onglets dont ces derniers, leurs position, celui actif, le dernier ainsi que le pré-actif sont stockés en session.
(l'info actif, pre-actif et dernier sert à la mise en page ultérieur)
Je ne vous livrerais pas toute la classe mais juste la méthode qui coince, en l'occurrence celle qui sert à déclarer actif un onglet donné à partir de son id.
J'ai déjà eu des soucis avec une classe de ce type qui ne restait pas en session (visiblement à cause d'index integer), mais là tout se passe bien à ce niveau, mais quand je var_dump, les clés 'active', 'endTab' etc ne sont pas effacées comme elles le devraient.
Je passe sûrement à côté d'une évidence, mais j'ai beau chercher, je ne trouve pas.
Code PHP :
protected function setActiveTab($sIdTab) {
$mPosTab = $this->getPosTab($sIdTab);
//renvoi la position de l'onglet à activer (sa clé)
$iActiveTab = $this->getActiveTab();
//renvoi la position de l'onglet actif (sa clé)
$iCountOfTabs = $this->getCountOfTabs();
//renvoi le nombre d'onglets
if ((!empty($this->aTabs) && (false !== $mPosTab)) && ($iActiveTab !== $mPosTab)) {
//vérification pour éviter un traitement inutile
if (isset($this->aTabs[$iActiveTab]['active']))
unset($this->aTabs[$iActiveTab]['active']);
if (isset($this->aTabs[$iActiveTab-1]['preActive']))
unset($this->aTabs[$iActiveTab-1]["preActive"]);
if (isset($this->aTabs[$iCountOfTabs]["endTab"]))
unset($this->aTabs[$iCountOfTabs]["endTab"]);
//je vire tous les index active, preActive, endTab
foreach($this->aTabs as $key=>$aTab) {
if (in_array($this->sIdTab, $aTab)) {
$this->aTabs[(string)$key]['active'] = true;
if ($key != 0)
$this->aTabs[$key-1]['preActive'] = true;
break;
}
}
$this->aTabs[$iCountOfTabs-1]['endTab'] = true;
// -1 parce que mon tableau par de 0
return $this->updateTabsMemory();
//copie le tableau en session en écrasant l'ancien
}
return false;
//si ça n'a rien fait
}
le var_dump devrait ressembler à quelque chose comme ça :
Code PHP :
array(2) {
[0]=>
array(5) {
["url"]=>
string(4) "url2"
["title"]=>
string(8) "Onglet 2"
["idTab"]=>
string(1) "2"
["preActive"]=>
bool(true)
}
[1]=>
array(4) {
["url"]=>
string(4) "url3"
["title"]=>
string(16) "Onglet plus long"
["idTab"]=>
string(1) "3"
["active"]=>
bool(true)
["endTab"]=>
bool(true)
}
}
Si quelqu'un a une idée....
Pour précision, avant que je rajoute les clés "preActive" et "endTab", ça marchait très bien.
D'avance merci à ceux qui prendront le temps de me lire :)