Matthieu Marcillaud a écrit :
Hello
Soit un fond toto.html contenant une boucle sur une table n'existant pas :
- Avant
<B_zones>
- Boucle avant
<BOUCLE_zones(TOTO)>
- Boucle dans : #TITRE
</BOUCLE_zones>
- Boucle apres
</B_zones>
- Boucle sinon
<//B_zones>
- Apres
Si l'on appelle spip.php?page=toto : l'erreur sur table inconnue apparaît.
Si l'on appelle depuis le privé
echo recuperer_fond('toto');
Aucune erreur n'est affiché, mais surtout, nous pouvons lire :
- Avant
- Boucle avant
- Boucle apres
- Apres
En allant plus loin :
si l'on fait : <INCLURE{fond=toto}>, cela est identique à recuperer_fond() : aucune erreur signalée et affichage des parties conditionnelles de la boucle (alors que la table n'existe pas)
En entrant en mode debug, on comprend ce qui se passe : La fonction de la boucle générée est :
function BOUCLE_zoneshtml_d13c92d0dde19cd379a7129cff32ce05(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {
$connect = '';
}
Or, cette fonction ne retourne RIEN (NULL)
Mais le test effectué sur la fonction, affiche la partie conditionnelle si la boucle ne retourne pas '' (texte vide) et non NULL aussi...
(($t1 = BOUCLE_zoneshtml_d13c92d0dde19cd379a7129cff32ce05($Cache, $Pile, $doublons, $Numrows, $SP))!=='' ?
( ... ...
Il y a donc une petite coquille dans le compilateur je crois comprendre.
Quelqu'un saurait-il corriger sans tout casser ^^ ?
PS: en ajoutant (manuellement) return ''; dans la fonction de boucle, j'obtiens bien : - Avant - Boucle sinon - Apres