[SPIP Zone] formulaire, fonctions et variables

Bonsoir,

Je voulais déjà remercier Matthieu pour le site programmer.spip.org, car la doc générale n’arrive plus à vraiment présenter les possibilités de spip et pour le moment, bénéficier de tout le potentiel de spip 2 demandait des heures de recherche.
merci beaucoup pour sa vulgarisation de la programmation sous spip, qu’il soit assuré que ses efforts seront utilisés abondamment :slight_smile:

Néanmoins, j’ai beau aller sur programmer, doc, sur spip.net ou sur spip contrib, je ne trouve aucune explication satisfaisante sur l’intégration de variables non postées dans les formulaires.

J’ai créé mon squelette de formulaire.
j’ai créé ma fonction pour charger.
dans cette fonction, je récupère de la base une liste de données en tableau, afin d’afficher un select dans mon formulaire.
J’espère pouvoir utiliser une boucle POUR (spip bonux) comme dans le tuto de marcimat sur son blog.

Mais je bloque sur comment faire passer des variables des fonctions CVT vers les squelettes. J’ai cherché des détails sur GET/SET/ENV (et aussi ARRAY), mais ce sont des balises que je n’arrive pas à maîtriser avec le peu de doc que j’ai lu.

Au cas où ca peut aider, voici ma fonction charger pour le moment :

function formulaires_administration_supprimer_rubrique_charger_dist(){
$valeurs = array(
‹ id_rubrique › => $id_rubrique
);

// si le formulaire a ete traite, on supprime les valeurs postees
// pour permettre de poster un nouveau formulaire
if (_request(‹ formulaire_traite ›)) {
foreach ($valeurs as $cle=>$val) {
set_request($cle, null);
}
}

$liste_rubriques = array();

$res = sql_select(array(‹ id_rubrique ›, ‹ titre ›), ‹ spip_rubriques ›, ‹ id_parent=0 ›);

// boucler les resultats
while($row = sql_fetch($res)){
$liste_rubriques[$row[‹ id_rubrique ›]] = $row[‹ titre ›];
}

$valeurs[‹ liste_rubriques ›] = $liste_rubriques;
return $valeurs;
}

Si je passe mon tableau en variable globale, je peux le récupérer dans la balise #ENV ? est ce la bonne pratique pour les formulaires CVT ?

Si je peux me permettre, les formulaires sont à mon humble avis le dernier bastion des plugins où la documentation fait défaut, le tuto de marcimat sur son blog était super sauf que c’était quand même très relié à son plugin sur les champs extras, du coup c’est pas forcément facile de le transposer dans d’autres situations.

Merci pour les âmes charitables qui voudraient bien détailler le fonctionnement des formulaires…

FX

François-Xavier GUILLOIS a écrit :

$valeurs['liste_rubriques'] = $liste_rubriques;
return $valeurs;
}

Bon... bien, dans ton squelette de formulaire, il te suffit d'utiliser #ENV{liste_rubriques} tout simplement : tout le contenu de $valeurs est l'environnement du squelette de formulaire...

ainsi, tu pourras faire BOUCLE_t(POUR){tableau #ENV{liste_rubriques}} ...

tu peux aussi l'afficher comme ça pour debbuguer :
<pre>
[(#ENV{liste_rubriques}|print_r{1})]
</pre>

PS: pour le site programmer... y a encore la moitié à écrire... la route est longue, mais le chemin existe...

--
MM.

Bonsoir,

Le 7 avril 2009 20:45, François-Xavier GUILLOIS <fxguillois@gmail.com> a écrit :

Bonsoir,
dans cette fonction, je récupère de la base une liste de données en tableau,
afin d'afficher un select dans mon formulaire.
J'espère pouvoir utiliser une boucle POUR (spip bonux) comme dans le tuto de
marcimat sur son blog.
Mais je bloque sur comment faire passer des variables des fonctions CVT vers
les squelettes. J'ai cherché des détails sur GET/SET/ENV (et aussi ARRAY),
mais ce sont des balises que je n'arrive pas à maîtriser avec le peu de doc
que j'ai lu.

Pour compléter la réponse de Mathieu, il est aussi possible de faire
des boucles dans le squelette du formulaire à la place de ton
sql_select dans charger . Ainsi tu n'as pas nécessairement besoin de
la boucle (POUR)...
<BOUCLE_bidule(RUBRIQUES){critères}>
<select blala...
</BOUCLE_bidule>

J'espère que ce n'est pas déconseillé !
--
Bertrand Marne

Pour compléter la réponse de Mathieu, il est aussi possible de faire
des boucles dans le squelette du formulaire à la place de ton
sql_select dans charger . Ainsi tu n'as pas nécessairement besoin de
la boucle (POUR)...
<BOUCLE_bidule(RUBRIQUES){critères}>
<select blala...
</BOUCLE_bidule>

A force de vouloir programmer, on oublie les évidences ! merci pour cette piqure de rappel salvatrice :wink:

Néanmoins, la réponse de marcimat m'aide bien pour comprendre le fonctionnement du formulaire CVT.

Voilà j'ai une belle liste qui s'affiche à partir de mon php, je suis content ! :wink:

Merci à vous deux,

FX

François-Xavier GUILLOIS wrote:

> j'ai beau aller sur programmer, doc, sur spip.net ou sur

spip contrib, je ne trouve aucune explication satisfaisante sur l'intégration de variables non postées dans les formulaires.

Merci pour les âmes charitables qui voudraient bien détailler le fonctionnement des formulaires....

J'ai lu cette doc là, elle est assez super.

BoOz

Je repasse sur la liste, attention tu m'avais écris en perso.

BoOz

Toutes mes excuses, en fait la doc que j'ai lue a été complétée,
maintenant c'est nickel, effectivement.

merci,

Le 8 avr. 09 à 09:52, BoOz a écrit :

François-Xavier GUILLOIS wrote:

> j'ai beau aller sur programmer, doc, sur spip.net ou sur

spip contrib, je ne trouve aucune explication satisfaisante sur l'intégration de variables non postées dans les formulaires.

Merci pour les âmes charitables qui voudraient bien détailler le fonctionnement des formulaires....

J'ai lu cette doc là, elle est assez super.

Formulaires CVT par l'exemple - SPIP

BoOz