Page 1 sur 1

Utiliser des variables de manière non redondante

Posté : 25 janv. 2012, 18:37
par saucisse21
Bonjour,

Je viens vers vous pour une problématique sur laquelle je bloque bêtement...
Je suis en train de créer un menu déroulant.
Ce menu est généré automatiquement via un appel de rubriques sous php (wordpress).
Je souhaite ajouter une classe à mes sous-menus.
Ces classes de sous-menus devront être numérotées de 1 à X (selon le nombre de sous-menus créés).

Actuellement, j'ai ce code là :

Code : Tout sélectionner

function start_lvl(&$output, $depth) { $indent = str_repeat("\t", $depth); for ($numero = 0; $numero < 10 ; $numero++){ $output .= '<ul class="sub-menu" class="'. $numero . '">'; }; }
Ce code m'ajoute bien la classe souhaitée dans mon code.
Mais pour le premier sous-menu par exemple, au lieu de me créer un <ul class="sub-menu" class="1">, il me créé <ul class="sub-menu" class="1"> <ul class="sub-menu" class="2"> <ul class="sub-menu" class="3"> ... <ul class="sub-menu" class="10">.
Je souhaite donc savoir comment "exclure", au fur et à mesure, les numéros de classes déjà utilisés.

Si je résumé : je souhaite créer des classes numérotées de manière unique et croissante.
Mon premier sous-menu sera donc <ul class="sub-menu" class="1">, mon deuxième sous-menu <ul class="sub-menu" class="2">, etc !

En espérant avoir été clair, et en espérant que vous m'apporterez une solution !

Re: Utiliser des variables de manière non redondante

Posté : 25 janv. 2012, 19:14
par moogli
Salut,

Il me semble que l'attribut class est unique tu ne peu donc pas faire ainsi.
Par contre class="sub-class 1" est possible.
Après il faut que tu utilise une variable globale que tu incrémente à chaque fois Ue tu créer un nouveau ul, en gros le compteur de ta fonction doit être globale.
Ceci dit objet peu être plus "clair" à utiliser qu'une variable globale.
Par exemple
Class compteur{
private $cpt;
Public __construct(){
$this->cpt =0;
}

public getCpt(){
this->cpt ++;
return $his->cpt;
}
}
À chaque appel de getCpt() tu garde la même valeur. Tu peux même imaginer faire une classe statique si tu veux.


@+

Re: Utiliser des variables de manière non redondante

Posté : 26 janv. 2012, 10:16
par saucisse21
Merci pour ton apport, j'ai pu résoudre mon problème :)

J'ai réutilisé ton code
var $cpt;
	function __construct(){
	$this->cpt =0;
	}	
	function getCpt(){
	$this->cpt++;
	return $this->cpt++;
	}
que j'appelle comme cela
	function start_lvl(&$output, $depth) {
		$indent = str_repeat("\t", $depth);
		$output .= '<ul class="sub-menu' . $this->cpt++ . '">';
	}
Le tout situé dans une même class.

Maintenant tout est bon, merci encore !