[BUG] artCatId

Bonjour,


la fonction artCatId devrait normalement "renvoyer le numéro de la catégorie de l'article (sans les 0 complémentaires)."
Cependant, si un article a plusieurs catégories actives, artCatId devrait renvoyer 1,2,3.


Hors artCatId est de tel sorte:
return intval($this->plxMotor->plxRecord_arts->f('categorie'));
cela retourne la valeur numérique entière équivalente d'une variable
soit pour notre exemple (1,2,3), cela retourne 1 :D


Il faudrait peut-être une fonction du genre:
	/**
	 * Méthode qui retourne le numéro de la catégorie de l'article (sans les 0 complémentaires)
	 * en mode article, si plusieurs catégories actives, cela retourne une liste séparée par des virgules
	 *
	 * @return	int
	 * @scope	home,categorie,article,tags,archives
	 * @author	Stephane F
	 **/
	// public function artCatId() {

		// return intval($this->plxMotor->plxRecord_arts->f('categorie'));
	// }
	
	public function artCatId() {
		$catIds = explode(',', $this->plxMotor->plxRecord_arts->f('categorie'));
		$artCatId = array();
		foreach ($catIds as $idx => $catId) {
			array_push($artCatId, intval($catId));
		}
		$artCatId = implode(",",$artCatId);
		return $artCatId;
	}


Qu'en pensez-vous ?


Cordialement,

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Pourquoi ne pas renvoyer tout simplement un tableau contenant les ids des catégories ?
    La variable $artCatId telle que tu l'as renvoie n'est pas exploitable (à mon avis). Il faudra l'éclater de nouveau dans un tableau pour traiter chaque id des catégories si on veut faire un traitement dessus.
    Qu'en penses-tu ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Disons que je m'étais basé sur
    $this->plxMotor->plxRecord_arts->f('categorie');
    
    qui retourne une chaîne et comme la méthode retournait simplement cette chaîne je n'ai pas voulu m'écarter de l'esprit de ladite méthode ... :cool:


    avec la nouvelle méthode je fais
    if(preg_match('/114/',$plxShow->artCatId()))
    


    si ça retourne un tableau on pourrait aussi faire
    if(in_array('114',$plxShow->artCatId()))
    


    à part un test de présence, je ne vois pas à quoi sert cette méthode ...
    Qu'elle est la plus optimale ?
  • danielsandanielsan Member
    octobre 2012 modifié
    lol, comme je me bats avec des expressions régulières en ce moment,
    j'ai eu le mauvais réflexe d'utiliser preg_match alors qu'un simple strpos aurait suffit ...
  • Merci danielsan pour la modif, je l'ai appliqué hier c'est nickel :)
  • danielsan a écrit:
    lol, comme je me bats avec des expressions régulières en ce moment,
    j'ai eu le mauvais réflexe d'utiliser preg_match alors qu'un simple strpos aurait suffit ...

    Sauf qu'avec strpos, si tu cherches la catégorie 14 et que tu as également la catégorie 114 mais que la catégorie 14 que tu cherches a été supprimée, cela te sortira true. Une regex stricte te sortira false.
Connectez-vous ou Inscrivez-vous pour répondre.