SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

216 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Outils pour plugins > Config (cfg) > API CFG : #FORMULAIRE_XX
[3 commentaires]

API CFG : #FORMULAIRE_XX

dimanche 6 avril 2008, par Matthieu Marcillaud

Toutes les versions de cet article : [français] [italiano]

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati
1 vote

A partir de CFG 1.9, les formulaires dynamiques simplifiés appelés CVT introduits dans SPIP 2.0 (encore en développement) peuvent être utilisés pour sauvegarder des données comme le fait un formulaire classique CFG, avec l’avantage qu’ils deviennent utilisables dans l’interface publique aussi, et ajaxables.

CFG permet de réaliser des formulaires publics, qui s’appuient sur les formulaires dynamiques CVT de SPIP 2.0.

Note : Cette fonction n’est disponible qu’avec une version SPIP 2.0 dev SVN récente. Cette version de SPIP est en développement et n’est pas encore stable. Cette API est donc encore susceptible d’évoluer.

SPIP et les formulaires publics

Une nouvelle API pour réaliser des formulaires publics a été introduit dans la version de SPIP 2.0 en développement. Réaliser un formulaire public nécessite maintenant 2 fichiers :
- formulaires/x.html contient le formulaire
- formulaires/x.php contient 3 fonctions :

  • formulaires_x_charger() charge les valeurs par défaut
  • formulaires_x_verifier() vérifie les valeurs envoyées lors de l’envoi du formulaire
  • formulaires_x_traiter() effectue des traitements si les valeurs envoyées sont valides.

Ces formulaires peuvent être rechargés en ajax, c’est à dire que seul la partie contenant le formulaire est actualisée, et non toute la page. Pour utiliser l’ajax, il faut encadrer le formulaire par une classe css ajax, par exemple en l’intégrant dans une balise <div class="ajax">

Fonctionnement des formulaires CVT avec CFG

Lorsqu’un formulaire dynamique placé dans le dossier formulaires/ n’a pas de fonction charger() alors c’est le parseur et les fonctions charger, vérifier et traiter de CFG qui sont utilisées.

Pour appeler un formulaire, il suffit d’indiquer son nom :
- #FORMULAIRE_X

Il est possible de passer un identifiant (cfg_id) en premier paramètre du formulaire (rarement nécessaire)
- #FORMULAIRE_X{#ID_ARTICLE}

Adapter le fond CFG

Pour permettre à votre formulaire CFG d’être lu de la sorte, il faut qu’il contienne la balise #ACTION_FORMULAIRE{#SELF} et que le champ action du formulaire soit rempli. Cela donne :

Attention :
- [(#ENV{_cfg_}|form_hidden)] n’est plus nécessaire.

Afficher les messages de réussite ou d’echec

l’API des formulaires SPIP retourne plusieurs types de messages qui sont transmis à l’environnement : message_ok, message_erreur ainsi qu’un tableau erreurs qui contient des informations d’erreur pour chaque champ.

Ils s’utilisent comme ceci :

Formulaire minimal

Soit le formulaire formulaires/z.html contenant :

Il peut être appelé par #FORMULAIRE_Z.

Le champ description sera enregistré, par défaut, dans z/description (que l’on peut récupérer donc par #CONFIG{z/description}. Pour enregistrer ailleurs, vous pouvez utiliser tous les paramètres CFG à votre disposition. Par exemple en mettant : <!-- nom=ici -->, cela enregistrera la valeur dans ici/description

Intégrer ces formulaires dans les pages ?exec=cfg&cfg=xx

Par défaut, ces formulaires ne s’ajoutent pas aux menus de la page ?exec=cfg, ni ne peuvent être appelés directement avec ?exec=cfg&cfg=xx si le formulaire est nommé #FORMULAIRE_XX.

Pour ajouter ce type de formulaire, il faut créer un autre fond différent du nom du formulaire (donc pas fonds/cfg_xx.html). Ce fond pourra recevoir des paramètres de CFG concernant l’affichage de la page (paramètres onglet, liens). Ce fond devra posséder le paramètre <!-- interpreter=non --> qui indique à CFG qu’il ne doit pas rechercher (analyser la page html retournée) des champs de formulaire dans cette page.

Si ce paramètre n’est pas présent, CFG va considérer les paramètres inclus par les #FORMULAIRE comme des champs à récupérer, ce qui pourrait entrainer des erreurs imprévues (exemple : lire une colonne qui n’existe pas dans une table provoquant une erreur sql).

Pour ces raisons, il est conseillé fortement, dans ce genre de fonds appelant des #FORMULAIRE de ne pas mettre en plus un formulaire CFG classique (<form>...</form>). Par contre, il est tout à fait possible de mettre plusieurs #FORMULAIRE différents.

Exemple de fond/cfg_plugin.html :

Retour en haut de la page

3 Messages de forum

Voir toute la discussion

  • Répondre à ce message

    16 juillet 17:52 , par Matthieu Marcillaud

    Mise à jour de la documentation le 16 juillet :
    - #FORMULAIRE_CFG{x} disparait au profit de #FORMULAIRE_X directement (cfg 1.9 / spip 2.0 dev svn)

  • Répondre à ce message

    9 juin 16:08 , par marcimat

    Non, ça n’a rien changé : il est devenu possible de n’avoir qu’un seul fichier regroupant les 3 fonctions et appelé formulaires/nom.php si le fond s’appelle formulaires/nom.html

  • Répondre à ce message

    9 juin 08:53 , par cam.lafit

    S’lt

    La gestion CVT a changé, il n’y a plus qu’un seul fichier maintenant qui traite les 3 aspects de CVT.

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0