🤯 Mes #CHAMPS disparaissent si j'utilise une boucle condition dans une boucle avec critère personnalisé

Bonjour,

J’ai mis le doigt sur ce qui s’apparente à un bug ou bien en tout cas un comportement non souhaité :
le contexte/résultat d’une boucle avec un critère personnalisé est perdu si cette boucle contient une boucle condition.

J’utilise un critère personnalisé {entreprises_details} qui me permet depuis mon objet spip_entreprises d’accéder à la table spip_entreprises_details partageant la même clef (id_entreprise) en faisant un JOIN.

<BOUCLE_entreprises(ENTREPRISES){entreprises_details}{pagination 10}>

	 #TITRE a
	 
	 // Valeur sur la table spips_entreprises_details bien affichée
	 #NOMBRE_COLLABORATEURS collaborateurs
	 
</BOUCLE_entreprises>

On obtient : AB Menuiserie a 2 collaborateurs :white_check_mark:

Avec une boucle condition, rien ne va plus :

<BOUCLE_entreprises(ENTREPRISES){entreprises_details}{pagination 10}>

	 #TITRE
	  
	<BOUCLE_condition(CONDITION){si #ENV{exec}|=={mapage}|oui}>
	
		// Ne renvoie rien !
		a #NOMBRE_COLLABORATEURS collaborateurs

	</BOUCLE_condition>
		
</BOUCLE_entreprises>

On obtient : AB Menuiserie a collaborateurs :x:

J’ai bien évidemment trituré la boucle condition en testant d’autres choses comme {si #VAL{1}|=={1}|oui}, mais rien n’y fait, ce sont les valeurs/colonnes obtenus via le critère personnalisé qui s’évanouissent à l’intérieur d’une boucle condition.

Seuls les champs « natifs Â» de la boucle parente (ici spip_entreprises ) demeurent accessibles Ă  l’intĂ©rieur de la boucle condition.

Qu’en pensez-vous ?

Pierre-Jean

Et avec :
#_entreprises:NOMBRE_COLLABORATEURS

Voir #_n:BALISE - SPIP

Bonjour @RealET

Après test, cette écriture ne fonctionne pas ici ! C’était une bonne idée, et je suis étonné que cela ne fonctionne pas !

Par contre en guise de contournement : remplacer la boucle condition par un test du type suivant est ok :

	[(#ENV{exec}|=={mapage}|oui)
		
		// Fonctionnel !
		#NOMBRE_COLLABORATEURS
		
	]

Pas toujours exploitable, je regrette ma boucle condition !

Comme s’il manquait un transfert des conditions d’exécution de la boucle parente à la boucle condition… à suivre.

Peut être ton critère entreprises_details fout le bronx ?

Étudie ce qui se passe avec ?var_mode=debug parce que sinon c’est l’aveuglette.

Si ça se confirme, ça mériterait de faire un ticket.

Et sinon yaurait ça, qui n’est pas moins efficace car le critère si est testé avant le mysql :

<BOUCLE_entreprises_mapage(ENTREPRISES){entreprises_details}{pagination 10}
    {si #ENV{  exec}|=={mapage}}>
  #TITRE
  a #NOMBRE_COLLABORATEURS collaborateurs
</BOUCLE_entreprises_mapage>
<BOUCLE_entreprises_sinon(ENTREPRISES){entreprises_details}{pagination 10}>
   #TITRE
</BOUCLE_entreprises_sinon>
<//B_entreprises>