Version 1 — Mars 2015 — flouvel — Version initiale
Formulaire, commençons par le commencement, qui peut le moins pourra peut être le plus ..
À l’aise avec les boucles spip vous n’avez rien compris à la doc sur les formulaires CVT (et donc comme moi, indulgent mais inapte à participer), ce texte, à corriger et compléter, essaye de préparer à y comprendre un peu quelque chose.
1°) intégrer un formulaire comme celui ci-dessous à apage0.html (appelée avec spip.php ?page=apage0) ne peut rien faire (sauf si un plugin s’en charge) !
juste, cliquer sur le bouton à pour effet de remettre à zéro :
<!DOCTYPE html><html lang="#LANG">
<head><INCLURE{fond=inclure/head} /></head>
<body>
<hr />
<form method="post" action="#SELF"> <!-- #SELF ou #ENV{action} -->
#SET{un_tableau, #ARRAY}
<input type='text' name='texte' id='texte' value="#ENV{texte}" class="text" />
<input type='text' name='texte2' id='texte2' value="#SET{un_tableau,#GET{un_tableau}|push{texte2}}" class="text" />
<hr />
<input type="radio" name="choix" value="#SET{un_tableau,#GET{un_tableau}|push{YES}}" checked="">
<label>Oui</label>
<input type="radio" name="choix" value="#SET{un_tableau,#GET{un_tableau}|push{NO}}">
<label>Non</label>
<input type="radio" name="choix" id="coucou" value="#SET{un_tableau,#GET{un_tableau}|push{niOuiniNon}}">
<label class="checkbox-inline" for="coucou">Autre</label>
<hr />
<input type="checkbox" name="soif" value="#SET{un_tableau,#GET{un_tableau}|push{Soif}}">
<label>Soif</label>
<input type="checkbox" name="faim" value="NON agree">
<label>Faim</label>
<input type="checkbox" name="choix" id="motID_MOT" value="#SET{un_tableau,#GET{un_tableau}|push{Autre}}">
<label class="checkbox-inline" for="coucou">Autre</label>
<hr />
<input type="submit" value="<:bouton_chercher:>" class="ui button" /> <!-- class="submit" -->
</form>
<hr /><hr />
[(#GET{un_tableau}|foreach)]
</body>
</html>
La page affiche le tableau déclarer par #SET qui pourrait aussi bien être à l’extérieur du formulaire :
- 0=> texte2
- 1=> YES
- 2=> NO
- 3=> niOuiniNon
- 4=> Soif
- 5=> Autre
2°) on sort le formulaire (copie-collé avec #GET... inclu) dans un fichier /formulaire/aform.html et on l’intègre à la place par [(#FORMULAIRE_AFORM)], pas de changement .
3°) créer un fichier /formulaire/aform.php :
<?php
function formulaires_aform_charger_dist(){
$valeurs = array(
"texte" => "blabla",
"choix" => "",
"soif" => "",
"faim" => "",
"autre" => ""
);
return $valeurs;
}
...
?>
Insérer [
(#ENV**|unserialize|print_r{1})
] dans la apage.html (appelée par spip.php ?page=apage) nous dit que aform est bien là et nous permet de tester :
Array
(
[page] => aform
[formulaire_action] => aform
[formulaire_action_args] => M6UjFa2PWC(...)==
[texte] => blabla
[choix] =>
[soif] =>
également , spip.php ?page=apage&var_mode=debug , nous dit que les valeur texte : blabla , choix : , soif : etc..., sont bien là aussi
mais comment conserver et récupérer les données du formulaire ?
<div class="formulaire_spip formulaire_aform" id="formulaire_aform">
<form method="post" action="#ENV{action}"> <!-- #SELF ou #ENV{action} -->
#ACTION_FORMULAIRE <!-- {#ENV{action}} inutile, valeur par défaut-->
#SET{un_tableau, #ARRAY}
#SET{un_tableau,#GET{un_tableau}|push{#ENV{texte}}}
<input type='text' name='texte' id='texte' value="#ENV{texte}" class="text" />
<hr />
#SET{tableau2, #ARRAY}
<input type="radio" name="choix" value="Yes" [(#ENV{choix}|=={Yes}|oui)checked] />
<label>Oui</label>
<input type="radio" name="choix" value="No" [(#ENV{choix}|=={No}|oui)checked] />
<label>Non</label>
<input type="radio" name="choix" value="toto" [(#ENV{choix}|=={toto}|oui)checked] />
<label>Autre</label>
#SET{tableau2,#GET{tableau2}|push{#ENV{choix}}}
<hr />
#SET{tableau3, #ARRAY}
<input type="checkbox" name="soif" value="on1" id="soif" [ (#ENV{soif}|oui)checked] />
<label>Soif</label>
#SET{tableau3,#GET{tableau3}|push{#ENV{soif}}}
<input type="checkbox" name="faim" value="on2" id="faim" [ (#ENV{faim}|oui)checked] />
<label>Faim</label>
#SET{tableau3,#GET{tableau3}|push{#ENV{faim}}}
<input type="checkbox" name="autre" value="on3" id="autre" [ (#ENV{autre}|oui)checked] />
<label>Autre</label>
#SET{tableau3,#GET{tableau3}|push{#ENV{autre}}}
<hr />
<input type="submit" value="<:bouton_enregistrer:>" class="ui button" /> <!-- class="submit" -->
</form>
</div>
<hr /><hr />
[(#GET{un_tableau}|foreach)]
<hr /><hr />
[(#GET{tableau2}|foreach)]
<hr /><hr />
[(#GET{tableau3}|foreach)]
</div>
De là on voit bien comment exploiter ces tableaux dans des boucles spip.
Voilà pour un début de compréhension de la fonction _charger des formulaires CVT
on peut aussi passer une requête à l’url via cette fonction : ’trucs’=>_request(’trucs’)
c’est un autre monde mais si des geeks courageux veulent compléter
4°) ...