4D v14.3

URLs et actions de formulaires

Accueil

 
4D v14.3
URLs et actions de formulaires

URLs et actions de formulaires  


 

 

Le serveur Web 4D propose plusieurs URLs et actions de formulaires HTML spéciaux vous permettant d'effectuer différentes actions dans votre base de données.

Ces URLs sont les suivants :

  • 4DACTION/, permettant de lier un objet HTML à une méthode projet de votre base,
  • 4DCGI/, permettant d'appeler la Méthode base Sur connexion Web depuis tout objet HTML,
  • 4DSYNC/, permettant de synchroniser les données des tables.

En outre, le serveur Web 4D accepte plusieurs URLs supplémentaires :

  • /4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR et /4DWEBTEST, vous permettent d’obtenir diverses informations sur le fonctionnement de votre site Web 4D. Ces URLs sont décrits dans la section Informations sur le site Web.
  • /4DWSDL, permettant d'accéder au fichier de déclaration des Web Services publiés sur le serveur. Pour plus d'informations, reportez-vous à la section Commandes du thème Web Services (Serveur) et au manuel Mode Développement.

Syntaxe : 4DACTION/MaMéthode{/Param}

Utilisation : URL ou Action de formulaire.

Cet URL vous permet de lier un objet HTML (texte, image, bouton...) à une méthode projet 4D. Le lien sera du type /4DACTION/MAMETH/PARAMSMAMETH est le nom de la méthode projet 4D à exécuter lorsque l'utilisateur clique sur le lien et PARAMS un paramètre optionnel de type Texte passé à la méthode dans $1 (reportez-vous ci-dessous au paragraphe “Les paramètres Texte passés aux méthodes via des URLs”).
Lorsque 4D reçoit une requête /4DACTION/MAMETH/PARAMS, la Méthode base Sur authentification Web (si elle existe) est appelée. Si elle retourne Vrai, la méthode MAMETH est exécutée.

4DACTION/ peut être associé à un URL dans une page Web statique. La syntaxe de l’URL sera de la forme suivante : 

<A HREF="/4DACTION/MAMETH/PARAMS"> Faire Quelque Chose</A> 

La méthode projet MAMETH doit généralement retourner une “réponse” (envoi de page HTML via WEB ENVOYER FICHIER ou WEB ENVOYER BLOB, etc.). Veillez à effectuer les traitements les plus courts possibles, afin de ne pas bloquer le navigateur.

Note : Une méthode appelée par 4DACTION ne doit pas faire appel à des éléments d’interface (DIALOGUE, ALERTE...).

Attention : Pour qu’une méthode 4D puisse être exécutée via l’URL 4DACTION/, elle doit disposer de l'attribut “Disponible via les balises HTML et les URLs 4D (4DACTION...)” (désélectionné par défaut), défini dans les propriétés de la méthode. Pour plus d'informations sur ce point, reportez-vous à la section Sécurité des connexions.

Cet exemple décrit l'association de l'URL 4DACTION/ à un objet HTML image afin d'afficher dynamiquement une image dans la page. Vous insérez dans une page HTML statique les instructions suivantes :

<IMG SRC="/4DACTION/PICTFROMLIB/1000">

Le code de PICTFROMLIB est le suivant :

 C_TEXTE($1`Ce paramètre doit toujours être déclaré
 C_IMAGE($VarImage)
 C_BLOB($VarBlob)
 C_ENTIER LONG($Numéro)
  //On récupère le numéro d’image dans la chaîne $1
 $Numéro:=Num(Sous chaine($1;2;99))
 LIRE IMAGE DANS BIBLIOTHEQUE($Numéro;$VarImage)
 IMAGE VERS GIF($VarImage;$VarBlob)
 WEB ENVOYER BLOB($VarBlob;"image/gif")

Le serveur Web 4D permet une facilité supplémentaire lorsque vous souhaitez utiliser des formulaires “postés”, c’est-à-dire des pages HTML statiques renvoyant des données au serveur Web. L’action du formulaire doit impérativement débuter par /4DACTION/NomMéthode.

Note : Un formulaire peut être soumis dans deux modes (4D accepte les deux) :

  • POST, généralement utilisé pour envoyer des données vers le serveur Web - dans une base de données.
  • GET, généralement utilisé pour interroger le serveur Web - données en provenance de la base.

Lorsque le serveur Web reçoit un formulaire posté, il appelle la méthode projet COMPILER_WEB (si elle existe), puis la Méthode base Sur authentification Web (si elle existe). Si elle retourne Vrai, la méthode NomMéthode est exécutée. 4D analyse les champs HTML présents dans le formulaire, récupère leurs valeurs et remplit automatiquement des variables 4D avec leur contenu. Il suffit pour cela que les champs du formulaire et les variables 4D portent le même nom.

Vous pouvez également utiliser la commande WEB LIRE VARIABLES, permettant de récupérer le nom et la valeur de tous les champs inclus dans une page HTML soumise au serveur.

Note : Pour plus d'informations, reportez-vous à la section Associer des objets 4D à des objets HTML.

La syntaxe HTML à appliquer dans le formulaire est du type suivant :

  • pour la définition de l’action du formulaire :
    <FORM ACTION="/4DACTION/NomMéthode" METHOD=POST>
  • pour la définition d’un champ du formulaire :
    <INPUT TYPE=Type de champ NAME=nom du champ VALUE="Valeur par défaut">
Pour chaque champ du formulaire, 4D affecte la valeur du champ à la variable de même nom.
Pour les options de formulaires (par exemple les cases à cocher), 4D affecte la valeur 1 à la variable associée s’il est coché, sinon 0.
Pour les saisies de type numérique, 4D effectue une conversion Alpha–>Numérique de la valeur du champ.

Note : Si un champ du formulaire est nommé OK (par exemple un bouton Submit), la variable système OK de 4D est mise à 1 si la valeur du champ est non vide, sinon 0.

Dans une base Web 4D, nous souhaitons que les navigateurs puissent effectuer des recherches parmi les enregistrements par l’intermédiaire d’une page HTML statique. Cette page s’intitule “search.htm”. La base contient d’autres pages statiques, permettant par exemple d’afficher le résultat de la recherche (“results.htm”). Le type POST a été associé à la page, ainsi que l’action /4DACTION/SEARCH. Voici le code HTML correspondant à cette page :

<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST>
<INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR>
<!–– Habituellement on met le nom du bouton dans VALUE, pour des raisons d’interprétation il faut mettre un nombre dans VALUE––>
<INPUT TYPE=CHECKBOX NAME=EXACT VALUE="1">Mot entier<BR>
<!–– OK est un cas particulier––>
<INPUT TYPE=SUBMIT NAME=OK VALUE="Chercher">
</FORM>

En cours d’utilisation, vous tapez “ABCD” dans la zone de saisie, vous cochez l’option et validez en cliquant sur Chercher.
4D appelle alors la méthode projet COMPILER_WEB. Voici son contenu :

 C_TEXTE(VNAME)
 VNAME:=""
 C_ENTIER LONG(vEXACT)
 vEXACT:=0
 OK:=0 `cas particulier

Dans l’exemple, VNAME contient la chaîne "ABCD", vEXACT a pour valeur 1, et OK a pour valeur 1 (car on a cliqué sur un bouton dont le nom est OK).
4D appelle la Méthode base Sur authentification Web (si elle existe), puis la méthode projet PROCESSFORM, dont voici le contenu :

 Si(OK=1)
    Si(vEXACT=0) //Si l’option n’a pas été cochée
       vNAME:=VNAME+"@"
    Fin de si
    CHERCHER([Jockeys];[Jockeys]Nom=vNAME)
    vLIST:=Caractere(1) `Retourne la liste en HTML
    DEBUT SELECTION([Jockeys])
    Tant que(Non(Fin de selection([Jockeys])))
       vLIST:=vLIST+[Jockeys]Nom+" "+[Jockeys]Tél+"<BR>"
       ENREGISTREMENT SUIVANT([Jockeys])
    Fin tant que
    WEB ENVOYER FICHIER(results.htm) //Envoi de la liste dans le
  //formulaire results.htm, qui contient une référence à la variable vLIST,
  //par exemple <!––4DVAR vLIST––>
    ...
 Fin de si

Syntaxe : 4DCGI/<action>
Mode : Tous.

Utilisation : URL.

Lorsque le serveur Web 4D reçoit l’URL /4DCGI/<action>, la Méthode base Sur authentification Web (si elle existe) est appelée. Si elle retourne Vrai, le serveur Web appelle la Méthode base Sur connexion Web en passant l’URL “tel quel” dans $1.

L’URL 4DCGI/ ne correspond à aucun fichier. Il a pour unique rôle d’appeler 4D via la Méthode base Sur connexion Web. Le paramètre “<action>” peut contenir n’importe quel type d’information.

Cet URL vous permet donc d’effectuer tout type de traitement. Il vous suffit de tester la valeur de $1 dans la Méthode base Sur connexion Web ou dans une de ses sous-méthodes et d’effectuer dans 4D le traitement adéquat. Par exemple, vous pouvez construire des pages HTML statiques entièrement personnalisées d’ajout, de recherche ou de tri d’enregistrements, ou encore générer des images GIF à la volée. Des exemples d’utilisation de cet URL sont fournis dans les descriptions des commandes IMAGE VERS GIF et WEB ENVOYER REDIRECTION HTTP.

A l’issue du traitement, une “réponse” doit être retournée, à l’aide d’une des commandes d’envoi de données (WEB ENVOYER FICHIER, WEB ENVOYER BLOB, etc.).

ATTENTION : Veillez à effectuer les traitements les plus courts possibles, afin de ne pas bloquer le navigateur.

4D envoie des paramètres Texte aux méthodes 4D appelées par des URLs spéciaux (4DACTION/ et 4DCGI/). Voici quelques remarques sur ces paramètres :

  • Même si vous n'utilisez pas ces paramètres, vous devez les déclarer explicitement avec la commande C_TEXTE, sinon des erreurs runtime se produiront lorsque vous accèderez par le Web à une base exécutée en mode compilé. Le message est du type "Une erreur runtime s'est produite à la ligne numéro : 0 Lors de l'exécution de la méthode * SUR CONNEXION WEB. Paramètres invalides dans une commande Executer".
    Cette erreur runtime est provoquée par l'absence de déclaration du paramètre texte $1 dans la méthode 4D appelée lorsque vous avez cliqué sur le lien HTML. Comme le contexte de l'exécution est la page HTML courante, l'erreur fait référence à la “ligne 0” de la méthode qui a envoyé la page au navigateur Web. Déclarer explicitement le paramètre texte $1 permet de supprimer ces erreurs : 
      `Méthode projet M_ADD_RECORDS
     C_TEXTE($1` Ce paramètre DOIT être explicitement déclaré
     Repeter
        AJOUTER ENREGISTREMENT([Clients])
     Jusque(OK=0)
  • Le paramètre $1 retourne des données supplémentaires placées à la fin de l'URL, et peut être utilisé pour passer des données de l'environnement HTML vers l'environnement 4D.

Vous devez déclarer différents paramètres en fonction de l'origine et de la nature de l'appel de la méthode 4D.

  ` Méthode base Sur connexion Web
 C_TEXTE($1;$2;$3;$4;$5;$6` Ces paramètres DOIVENT être explicitement déclarés
  • Méthode appelée par l’URL 4DACTION/
    Vous devez déclarer le paramètre $1 :
  ` Méthode appelée par l'URL 4DACTION/
 C_TEXTE($1` Ce paramètre DOIT être explicitement déclaré
  • Méthode appelée par la balise 4DSCRIPT/
    La méthode retourne une valeur dans $0. Vous devez déclarer les paramètres $0 et $1 :
  ` Méthode appelée par 4DSCRIPT/ sous forme de commentaire HTML
 C_TEXTE($0;$1` Ces paramètres DOIVENT être explicitement déclarés

Syntaxe :
4DSYNC/$catalog
{/NomTable}
4DSYNC/NomTable{/NomTable}{/NomChamp1,...,NomChampN}{Params}

Utilisation : URL en méthode POST ou GET

Cet URL permet de synchroniser les données des tables de la base 4D locale avec une base distante via HTTP. Il peut par exemple être utilisé pour synchroniser une base 4D et une application cliente installée sur un Smartphone ou toute application HTTP tierce.

L'URL 4DSYNC/ peut être utilisé en méthode GET afin de récupérer les données de la base 4D ou en méthode POST afin de mettre à jour les données de la base 4D.

Voici les différentes requêtes HTTP utilisables :

  • GET /4DSYNC/$catalog
    Retourne la liste des tables de la base et leur nombre d'enregistrements. Par exemple pour une structure avec deux tables PERSONS (2 enregistrements) et INVOICES (3 enregistrements), la syntaxe : http://localhost/4DSYNC/$catalog/ retourne dans le navigateur: PERSONS 2 INVOICES 3
  • GET /4DSYNC/$catalog/NomTable
    Retourne la description de la structure de NomTable (format XML).
  • GET /4DSYNC/NomTable/NomChamp1{,NomChamp2},...
    Retourne les données des champs NomChamp de la table NomTable.
  • GET /4DSYNC/NomTable/NomChamp1?$stamp=0&$format=json
    Retourne les données du champ NomChamp de la table NomTable à partir du stamp 0 et au format json.
  • POST /4DSYNC/NomTable/NomChamp1{,NomChamp2},...
    Intègre dans la base 4D les modifications effectuées sur le client.

Note : Le format utilisé pour l'échange des données est le JSON (JavaScript Object Notation). La grammaire complète est disponible auprès des services techniques de 4D SAS.

Note : Pour que les mécanismes de synchronisation soient activés, l'option Autoriser l’accès à la base de données via les URLs 4DSYNC doit être cochée dans la page "Web/Configuration" des Propriétés de la base (cf. ci-dessous). Dans le cas contraire, les requêtes contenant l'URL 4DSYNC échoueront.

Vous devez tenir compte des principes suivants lorsque vous utilisez l'URL 4DSYNC/ :

  • 4D travaille avec la structure virtuelle de la base si elle existe. Dans ce cas, les paramètres NomTable et NomChamp correspondent aux noms de tables et champs tels qu'ils ont été définis via les commandes FIXER TITRES CHAMPS et FIXER TITRES TABLES. A noter que la portée de ces commandes est la session, dans le cadre de 4D Server vous devez les appeler en procédure stockée sur le serveur.
  • La réplication des champs de type Blob et Image n'est pas prise en charge.
  • Pour que la synchronisation puisse être effectuée :
    • Le serveur HTTP doit être lancé.
    • L'option Autoriser l’accès à la base de données via les URLs 4DSYNC doit être cochée dans la page "Web/Configuration" des Propriétés de la base (cf. section Sécurité des connexions).
    • La propriété Activer réplication doit être cochée pour chaque table dont vous voulez synchroniser les données. Si une structure virtuelle a été définie, la table doit être incluse dans cette structure virtuelle. Attention, le fait de cocher cette option publie des informations supplémentaires, vous devez veiller à ce que les accès à votre base de données soient protégés (cf. description de l'option dans la section Sécurité des connexions).
  • Lorsque 4D reçoit une requête /4DSYNC, la Méthode base Sur authentification Web est appelée (hormis en cas de mot de passe incorrect, voir le schéma de connexion dans la section Sécurité des connexions). Si elle retourne Vrai, la requête est exécutée, sinon elle est rejetée.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Serveur Web
Nom intl. : URLs and Form Actions

 
VOIR AUSSI  

Associer des objets 4D à des objets HTML
WEB LIRE VARIABLES

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)

Hérité de : URLs et actions de formulaires ( 4D v12.4)