[spip-dev] Formulaires CVT et arguments

Lorsque c'était encore en plein développement, j'avais rapidement abordé la question, mais je n'ai pas eu de réponse.
Voyons maintenant que c'est fini.

Un formulaire est appelé par :
#FORMULAIRE{arg1, arg2, arg3}

Et ses arguments sont récupérés dans cet ordre par les fonctions CVT.

Mais on voit dans la doc qu'il est possible, dans un article, d'écrire :
<formulaire|truc|arg=valeur|autre=machin|etc=ainsidesuite>

Dans ce cas, on peut donner des arguments nommés, sans ordre ni nombre précis, du coup !

Questions :

RastaPopoulos a écrit :

Lorsque c'était encore en plein développement, j'avais rapidement abordé la question, mais je n'ai pas eu de réponse.
Voyons maintenant que c'est fini.

Un formulaire est appelé par :
#FORMULAIRE{arg1, arg2, arg3}

Et ses arguments sont récupérés dans cet ordre par les fonctions CVT.

Mais on voit dans la doc qu'il est possible, dans un article, d'écrire :
<formulaire|truc|arg=valeur|autre=machin|etc=ainsidesuite>

ca c'est un modele qui peut effectivement contenir un formulaire, mais dans ce cas, tu mettras tes parametres dans l'ordre que tu veux à l'appel du formulaire
squelettes/modeles/formulaire.html => #FORMULAIRE{#ENV{arg},#ENV{autre},#ENV{etc}}

enfin, si j'ai bien compris la question...

Stephane a écrit :

enfin, si j'ai bien compris la question...

Ce n'est pas ce qui est marqué dans la doc officielle :
http://www.spip.net/ecrire/?exec=articles&id_article=3796

"""""""""""""""""""""""""""
Cerise sur le gâteau, il est possible d’ajouter le formulaire dynamique ajax dans le texte d’un article :

<formulaire|annee> qui est équivalent à #FORMULAIRE_ANNEE dans un squelette

et passer aussi un argument : <formulaire|annee|date=13/03/2008> qui sera récupéré dans les fonctions charger/valider/modifier
"""""""""""""""""""""""""""

C'est le "date=13/03/2008" qui est important.

RastaPopoulos a écrit :

Stephane a écrit :

enfin, si j'ai bien compris la question...

Ce n'est pas ce qui est marqué dans la doc officielle :
SPIP

effectivement, j'avais pas vu cette possibilite et effectivement il y a un truc qui cloche(ou merite une explication).
Pour #FORMULAIRE_XXX, on s'appuie sur l'ordre alors que pour <formulaire|xxx|arg=val>, c'est le nom qui doit compter
il faudrait voir ce qui est passé à balise_FORMULAIRE_XXX_stat quand on fait <formulaire|xxx|arg1=val1|arg2=val2>.
mais bon, au pire, le passage par un modele donne une solution...

@++

php ne permettant pas de nommer les arguments, c'est bien l'ordre de ceux ci qui compte aussi dans l'ecriture
<formulaire|xxx|arg1=val1|arg2=val2>
le nommage etant alors surtout mnemotechnique.
Il faudrait pouvoir faire mieux, sans doute.
Cédric

cedric.morin@yterium.com a écrit :

php ne permettant pas de nommer les arguments, c'est bien l'ordre de ceux ci qui compte aussi dans l'ecriture
<formulaire|xxx|arg1=val1|arg2=val2>
le nommage etant alors surtout mnemotechnique.
Il faudrait pouvoir faire mieux, sans doute.
Cédric

Ben c'est vrai qu'en PHP, dans la grande majorité des cas, y compris dans le code de SPIP, on a pas forcément l'utilité de ça.
En revanche pour les formulaires, je pense que ça doit arriver souvent qu'il y ait un nombre de paramètres indéfinis OU qu'on ne veuille pas obliger l'utilisateur à un ordre précis, ou les deux.

Du coup, on pourrait imaginer utiliser la même technique que image_typo et faire un get_func_args() puis parser les arguments en regardant s'ils sont de la forme "truc=machin".

Comme il n'y a pas non plus 300 arguments, on pourrait définir que lorsque TOUS les arguments récupérés sont de la forme "truc=machin", ALORS on n'a plus le comportement actuel (ce qui permet de garder l'existant), mais à la place on renvoie aux fonctions CVT un seul argument qui est un tableau indexé :
truc => machin
bidule => chose
etc => point

cedric.morin@yterium.com a écrit :

php ne permettant pas de nommer les arguments, c'est bien l'ordre de ceux ci qui compte aussi dans l'ecriture
<formulaire|xxx|arg1=val1|arg2=val2>
le nommage etant alors surtout mnemotechnique.

C'est pas vraiment mnémotechnique mais j'imagine que
tu veux dire que c'est un moyen de documenter les args.

Malheureusement c'est méchamment trompeur puisque ça induit à penser
qu'on peut choisir l'ordre...

Il faudrait pouvoir faire mieux, sans doute.

ça mériterait je pense :slight_smile:

JL