form_hidden insère un champ id_ qui n'est pas dans l'action

JLuc <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
J'ai été confronté à un comportement étonnant de form_hidden sur un formulaire inclu dans une noisette,
dans les circonstances suivantes :

- les urls du site sont sans réécriture (pas url_propres)

- on est sur une page dont l'url est de la forme de celle d'un objet éditorial
   par exemple ?page=patate&id_patate=1235 dans l'url
   mais il n'est pas nécessaire que 'patate' soit un objet déclaré

- le formulaire est inclu dans une noisette qui ne reçoit PAS l'id_patate
   car il n'en a pas besoin

- le formulaire reçoit en conséquence une action qui n'a rien à voir avec l'id_patate de la page courante
   (par exemple ?page=desfraises&sucre=oui)

- form_hidden appliqué à cette action renvoie une liste de <input hidden> correspondant à chaque élément de l'action 
('desfraises' et 'sucre') comme attendu, mais aussi un input hidden pour l'identifiant 'id_patate' de la page courante, 
alors que cet identifiant n'apparaît pas dans l'action (et que j'en veux pas)
Si par contre il y a d'autres arguments d'urls dans la page, ça ne crée pas d'autres input pour eux. Sur une page 'truc' 
il n'y a que l'id_truc' qui se trouve ajouté en input hidden.

La doc sur spip.net ne décrit pas cela : "Si on fait un formulaire qui utilise comme action un lien comprenant des 
arguments (par exemple, quand on utilise la balise #SELF avec le type d’url par défaut), il faut remettre ces valeurs 
dans des champs hidden ; cette fonction calcule les champs en question.")

Cet ajoût dérogatoire est-il nécessaire ? Pourquoi ?

Si cet ajoût est nécessaire par défaut, peut être serait il possible d'ajouter un argument à form_hidden pour utiliser 
form_hidden SANS que l'identifiant de la page courante soit ajoutée comme input hidden dans le formulaire, s'il n'est 
pas explicitement dans l'action ?

C'est peut être un bug aussi : une fuite bien ciblée, du contexte global dans l'action locale.
form_hidden appelle urls_decoder_url pour 'comprendre' l'action et en extraire les variables mais je ne vois pas où la 
fuite a lieu.

JL

JLuc

_______________________________________________
liste: http://listes.rezo.net/mailman/listinfo/spip-dev
doc: http://www.spip.net/
dev: http://trac.rezo.net/trac/spip/
irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.