Carnet Wiki

Formulaire b-a-ba ,   Charger ... c ..

Version 2 — Mars 2015 flouvel

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 :
<cadre class=« lan­gage »> < html ... class=« lan­gage  »>
 < ! body DOCTYPE html><html lang=« #LANG  »>

<INCLUREfond=inclure/head /></ head > <body >
#SETun_tableau, #ARRAY




(#GETun_tableau </ body... html </body > </html >

La page affiche le tableau déclarer par #SET qui pourrait aussi bien être à l’extérieur du formulaire :
-  => texte2
-  1=> YES
-  2=> NO
-  3=> niOuiniNon
-  4=> Soif
-  5=> Autre

2°) on sort le formulaire (copie-collé en incluant < code>#GET</code >) dans un fichier / formulaire/aform . avec # GET ... inclu) dans un fichier /formulaire/aform.html ) et on l’intègre à la place par < code>[(#FORMULAIRE_AFORM [(# FORMULAIRE_AFORM )].
Pas , 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 < code>[

(#ENV**|unserialize|print_r1)</pre  [< pre>(#ENV**|unserialize|print_r1)</pre >]</code >  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 ?

  • conserver :
    Si dans la zone de texte vous tapez un texte après voir cliqué sur submit [enregistrer] la valeur du texte est sauvegardé grâce à < code>value=« #ENVtexte »</code >
    value=« #ENVtexte  »
    Mais pour les radios checkboxs ? value=« #ENVsoif »</code > value=« #ENVsoif  » n’a pas d’effet , cela ne signale pas que la case est « checked ». La solution : < code>[(#ENVchoix|==Yes|oui)checked] [(# ENVchoix|==Yes|oui)checked]
    </code >
    -* récupérer :
    avec #SET ... |push
    <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 désœuvrés courageux veulent compléter
[La fonction charger () des formulaires CVT->http://www . spip.net/fr_article4151.html]
[Passage d’arguments aux fonctions CVT->http://programmer.spip.net/Passage-d-arguments-aux-fonctions]

4°) ...