Tableau d'ENV pas transmis à un formulaire CVT
Soit un modèle machin.html qui contient :
<div class="ajax">
#FORMULAIRE_MACHIN{#ENV{args}}
</div>
qui appelle donc lui même un CVT qui reçoit en param un tableau des options passées au modèle :
function formulaires_machin_charger($options) {
...
}
En 4.1, $options
arrive toujours vide dans le cvt, alors que #ENV{args} dans le modèle est bien un tableau.
En 3.2, ça fonctionne.
Ça semble venir de cette modif : https://git.spip.net/spip/spip/src/commit/18ef25bdd9ff87133993e94ed846e58be6ee7bf4/ecrire/balise/formulaire_.php#L147
Si je commente cette ligne, je reçois bien mon tableau.
J'ai tenté de passer #ENV{args}|serialize
ou #ENV{args}|json_encode
, pas mieux, je reçois une chaine vide ou "N;".
Par contre, si je colle un tableau en dur dans le modèle :
<div class="ajax">
#FORMULAIRE_LISTE_ARTICLES{#ARRAY{a,1,b,2}}
le CVT le reçoit bien tel quel.
J'ai débuggé ce qui passe par la transformation ligne 147, et $p->code passe de
executer_balise_dynamique('FORMULAIRE_MACHIN',
array(interdire_scripts(entites_html(table_valeur($Pile[0]??[], (string)'args', null),true))),
array('plugins/machin/squelettes/modeles/machin.html','html_0378673ec0ff59e64aee1eba979f2535','',2,$GLOBALS['spip_lang']))
à
'<'.'?php echo (executer_balise_dynamique(\'FORMULAIRE_MACHIN\',
array(interdire_scripts(entites_html(table_valeur($Pile[0]??[], (string)\'args\', null),true))),
array(\'plugins/machin/squelettes/modeles/machin.html\',\'html_0378673ec0ff59e64aee1eba979f2535\',\'\',2,$GLOBALS[\'spip_lang\']))); ?'.'>'
et dans ce cas, executer_balise_dynamique() ne reçoit plus le tableau qui vient de l'#ENV (dynamique) dans ses $args, alors qu'elle reçoit bien un tableau "statique".
Parce que la $Pile
n'est plus déclarée dans ce cas ?
A ce stade, je sèche un peu...