[Résolu] Passage de parametre en mode GET, récupération et utilisation dans un modele

Bonjour,
(Spip V 4.2.9)
En public, en mode connecté, (statut visiteur, zone restreinte)
Dans un modèle A (appelé dans un article), je construis un tableau qui affiche les données d’un formulaire en base (n’y figurent que les données du visiteur connecté).
En regard de chaque ligne, (donc dans une boucle*) je forge une url de la façon suivante :
<a href=[(#URL_ARTICLE{**xxx**}|parametre_url{id_formulaires_reponse,#ID_FORMULAIRES_REPONSE})]>Modifier</a

Dans l’article xxx un autre modèle B est censé récupérer l’id_formulaires_reponse de façon à pouvoir ré-éditer le formulaire avec les données de l’id à fin de modifications, de la manière suivante :
#FORMULAIRE_FORMIDABLE{8,'',#ARRAY{id_formulaires_reponse,#GET{monid}}}


  1. l’url est bien forgée mais 1er pb, je ne récupère l’id_formulaires_reponse via #ENV (parce que dans un modèle ???)
  2. je peux néanmoins le récupérer via du php et $_GET (pas top mais bon), le filer à un #SET et l’afficher par un #GET, ex, #GET{monid}; jusque là tout va bien.
  3. mais #FORMULAIRE_FORMIDABLE{8,'',#ARRAY{id_formulaires_reponse,#GET{monid}}} affiche un formulaire vide au lieu du formulaire avec les données de monid. Si à la place de monid je mets un entier valide en dur, ça fonctionne.
    Bilan je ne comprends pas : pourquoi #GET{monid} affiche bien la bonne valeur mais qu’elle ne passe pas en paramètre dans #FORMULAIRE_FORMIDABLE… (en plus du pb de #ENV , grr).
    Merci et belle soirée à tous
    Moyes

*boucle pour affichage du tableau
<BOUCLE_formidable_id_form(FORMULAIRES_REPONSES){id_formulaire=#ENV{id}}{id_auteur=#SESSION{id_auteur}}{par date}>

Salut,

Tu es allé voir ici ? La balise #ENV - SPIP-Contrib
On y explique que :

Cependant les arguments passés explicitement au modèle se retrouvent dans #ENV{args/nomdelargument}

#SET{monid, #VAL{id_formulaires_reponse}|_request|intval}
#FORMULAIRE_FORMIDABLE{8,'',#ARRAY{id_formulaires_reponse,#GET{monid}}} 

devrait le faire

(écrit de tête sans tester)

Oui j’étais allé voir mais si args existe bien, il est vide ! (mode debug) je n’ai pas compris.

Ah oui, très bien, ça le fait nickel. Super. Merci.
Maintenant il me reste à comprendre pourquoi ça marche, mais ça marche.
Encore merci.
Moyes

_request est une fonction PHP fournie par SPIP, qu’on utilise justement pour récupérer une valeur transmise en GET ou en POST :

En PHP, on écrirait _request('id_formulaires_reponse') pour récupérer la valeur passée en GET, donc en squelette ça donne #VAL{id_formulaires_reponse}|_request

Avec un |intval pour forcer la valeur à un entier, par sécurité et parce que ça ne coûte pas plus cher.

Et on met ça dans monid avec un #SET, voilà.

Ça te parait plus clair ? :slight_smile:

Grand merci nicod d’avoir pris de temps de m’expliquer.
J’avais bien trouvé _request mais comme je ne m’en sortais pas (nouveau et encore maladroit sous SPiP) j’avais essayé:

#SET{monid, <?php echo intval(_request('id_formulaires_reponse')); ?>}

tout en étant conscient que ce n’était pas très propre (php dans squelette), mais bon j’étais bien content de récupérer monid que je pouvais afficher par un #GET.

Le problème, hélas, c’est que #GET{monid} ne passait pas en parametre dans :
#FORMULAIRE_FORMIDABLE{8,’’,#ARRAY{id_formulaires_reponse,#GET{monid}}}

et en fait c’est ça que je n’ai pas compris, et c’est là que je dois creuser si je ne veux pas rester idiot :wink:

Ta syntaxe est bien la bonne je te remercie encore de m’avoir aidé dans la compréhension de SPiP.
Belle journée à toi.