Passer des arguments via $ui.displayForm

4.0
Passer des arguments via $ui.displayForm
0
Tags: #<Tag:0x00007f13d73e7618>

#1

je travaille sur mon agenda fullcalendar.

quand je clique sur un jour, je veux créer une réservation.
parent.$ui.displayForm(null, “CrbGdrResa”, “0”, { nav: “add”}); => j’accède à mon objet en création

je voudrais initialiser la valeur de certains champs avec des données de l’agenda.
est-il possible de passer des paramètres via ui.displayForm ?


(David AZOULAY) #2

D’après la jsDoc https://www.simplicite.io/resources/4.0/jsdocui/Simplicite.UI.Engine.html#displayForm il est visiblement possible de passer un simple string ou un BusinessObject au niveau du 2ème paramètre.

Si vous valorisez des attributs de cet objet est-ce que cela répond au besoin ?

Autre option, passer vos paramètres (typiquement un JSON sérialisé en string) dans un paramètre de l’objet via https://www.simplicite.io/resources/4.0/jsdocui/Simplicite.Ajax.BusinessObject.html#setParameter et appeler le displayForm dans sa callback callback.


(François Genestin) #3

displayForm peut prendre en paramètre “values” pour forcer les valeurs, dans ce cas il n’y pas de rechargement des metadata.

Sans ce paramètre, il fera un getForCreate pour récupérer les métadata dans le context de création (dont le initCreate).

var item = { row_id:"0", field1: "val"... };
parent.$ui.displayForm(null, "CrbGdrResa", "0", { nav: "add", values: item });

Sinon vous pouvez valoriser après affichage via le paramètre onload.


#4

@francois j’ai ajouté { nav: “add”, values: item }); et du coup, le hook initCreate n’est plus exécuté

c’est normal ?


(François Genestin) #5

oui, si on spécifie ce que doit afficher le formulaire il n’y a pas d’appel serveur pour recharger les métadata, il faut nécessairement préparer tout son objet avant le displayForm.

Exemple :

var params = {
	inlineObjs: true,
	inlineThumbs: true,
	inlineDocs: false,
	metadata: true
};

// Instance main = the_ajax_myObject (server side postLoad)
parent.$ui.getUIObject("myObject", "the_ajax_myObject", function(obj) {
  // Context CREATE (initCreate on server side)
  obj.getForCreate(function() {
     var item = { row_id:"0", field1: "val"... };
     parent.$ui.displayForm(null, obj, "0", { nav: "add", values: item });
  }, params);
});