Affichage conditionnel

Les fonctions charger() ou traiter() peuvent indiquer dans leur réponse que le formulaire est éditable ou non. Cela se traduit par la réception d’un paramètre editable dans le squelette, qui peut servir à masquer ou non le formulaire (mais pas les messages d’erreur ou de réussite).

Il s’utilise comme ceci [(#ENV{editable}) ... contenu de <form> ... ] :

<div class="formulaire_spip formulaire_demo">

	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]

	[(#ENV{editable})
		<form method='post' action='#ENV{action}'><div>
		#ACTION_FORMULAIRE{#ENV{action}}
		<ul class="editer-groupe">
		...
		</ul>
		<p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
		</div></form>
	]
</div>

En cas de boucles dans le formulaire

Si une boucle SPIP est présente à l’intérieur de l’écriture [(#ENV{editable}) ... ] (ou tout autre balise), le compilateur SPIP renvoie une erreur (ou n’affiche pas correctement la page) car cela n’est pas prévu par le langage actuel de squelettes.

Pour remédier à cela, il faut :

  • soit mettre la boucle dans une inclusion appelée alors par <INCLURE{fond=mon/inclusion} />
  • soit utiliser le plugin Bonux et sa boucle CONDITION comme ceci :
    <div class="formulaire_spip formulaire_demo">
    
    	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
    	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    
    	<BOUCLE_editable(CONDITION){si #ENV{editable}}>
    		<form method='post' action='#ENV{action}'><div>
    		#ACTION_FORMULAIRE{#ENV{action}}
    		<ul>
    		...
    		</ul>
    		<p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
    		</div></form>
    	</BOUCLE_editable>
    </div>
    

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, Español, français