Skip to content

$data.set

Alias: $data.setData

Description

Enregistre la valeur d'un champ d'un dossier ouvert.

Attention, la méthode enregistre la valeur en mémoire uniquement. L'enregistrement en base de données n'est pas immédiat. Il est effectué soit en invoquant $data.flush, soit à la fermeture du dossier par $doc.close ou $doc.closeAll, soit lors de l'enregistrement du dossier par l'utilisateur après l'exécution du script, c'est-à-dire lorsque l'utilisateur cliquera sur "Enregistrer" ou "Fermer" lors de sa prochaine requête "POST" (à condition bien sur que ce "POST" porte sur le bon dossier).

Syntaxe

$data.set( context , value [ , options ] )

Paramètres

context string / map
Expression de contexte permettant d'identifier le champ à mettre à jour
value any
Valeur à enregistrer
options map

Map d'options relatives à la modification de champ. Les options reconnues sont:

ignoreValidation boolean
Flag true/false demandant de ne pas effectuer les contrôles de validation de la valeur, c'est-à-dire de ne pas appliquer les contrôles de validation définis dans la descript pour le champ. Par défaut ce flag est false.
checkPolicies boolean
Flag indiquant de vérifier les policies avant traitement. Par défaut le flag est à false. Est sans effet si l'application n'utilise pas de policies.

Retour

Retourne true si la mise à jour a réussi, sinon false

Exemple

Exemple simple de mise à jour d'un champ.

1
$data.set("personne[12].base[12].nom", "Dupont");

Illustration du comportement lorsque l'on tente d'inscrire une valeur inappropriée. Dans l'exemple ci-dessous, le champ "code" attend une valeur textuelle de 5 caractères max, mais nous allons tenter de lui passe une valeur plus longue.

1
2
$data.set("code", "abcdefghijkl");
$logger.info(#code);        // -> retourne null

Contexte

L'exemple part du principe que le contexte courant est celui du dossier contenant le champ, raison pour laquelle l'expression de contexte qui désigne le champ ne comporte pas d'élément relatif au modèle et au groupe.

L'expression #code retourne null car la valeur n'est pas adaptée au champ et ne peut pas y être stockée. Toutefois, la valeur "abcdefghijkl" n'est pas simplement ignorée. Elle est placée dans un buffer en mémoire et affichée à l'écran en indiquant qu'elle doit être corrigée. Ici le moteur applique une mécanique qui est également en place pour les valeurs provenant d'un formulaire HTML : une valeur inadaptée n'est pas simplement ignorée. Elle est certes non enregistrée en base de données (cela provoquerait une erreur SQL ou un troncage de valeur), mais elle reste présente en mémoire pour permettre à l'utilisateur de la corriger.

Il est possible de passer outre le contrôle de validité de la valeur au moyen de l'option ignoreValidation.

1
2
$data.set("code", "abcdefghijkl", { ignoreValidation: true });
$logger.info(#code);        // -> retourne "abcdefghijkl"