WebFormController
C'est ce qu'une fonction 4D renvoie pour agir sur la page. L'objet est sérialisé dans la réponse puis rejoué côté client : tout ce qu'il transporte se produit après la fin de votre fonction.
Function myAction($vo_POST : Object)->$vo_WebResponse : cs.bspkComponent.WebFormController
$vo_WebResponse:=cs.bspkComponent.WebFormController.new()
$vo_WebResponse.sendAlert("success"; BSPK_Translate("Toast_saved"))
$vo_WebResponse.reloadBlock("myList")
Les méthodes
| Méthode | Remarques |
|---|---|
sendAlert(type; title; message; duration) | Types : success, error, warning, info |
sendAlertAfterRedirect(…) | Survit à un rechargement : à utiliser quand vous redirigez |
reloadBlock(nameOrUuid; options) | Un bloc par appel, pas de collection. Rappelez-la pour un autre bloc |
redirectToRoute(menuName; lang; params; optionalParams) | Route par le nom de menu, pas par l'URL |
reloadBlocksWithConditionalDisplay($vo_POST) | Réévalue les blocs à affichage conditionnel |
Piège : un
sendAlertsuivi d'une redirection détruit le toast : la page se recharge avant qu'on ait pu le lire. Si le message porte une information, et surtout s'il est la seule explication du rechargement de la page, utilisezsendAlertAfterRedirect.
Les actions brutes
Tout ce qui n'a pas de méthode dédiée s'ajoute dans vc_Action :
$vo_WebResponse.vc_Action.push({vt_Action: "showModal"; vt_BlockName: "myModal"})
$vo_WebResponse.vc_Action.push({vt_Action: "closeModal"; vt_BlockName: "myModal"})
vt_modalId attend un UUID, vt_BlockName attend un nom
Côté client, le traitement de closeModal dans bspk.js résout vt_modalId comme un id HTML, puis comme bspk[data-uuid="…"] : il attend donc un uuid. Y passer un nom de bloc ne ferme rien, en silence : la modale reste ouverte, sans erreur. Seule l'autre branche, sur vt_BlockName, accepte un nom.
// WRONG - modal stays open, no error
$vo_WebResponse.vc_Action.push({vt_Action: "closeModal"; vt_modalId: "myModalBlocName"})
// RIGHT
$vo_WebResponse.vc_Action.push({vt_Action: "closeModal"; vt_BlockName: "myModalBlocName"})
Attention aussi à l'asymétrie avec les événements : une fonction de rendu prend vo_Params.vt_BlocName, alors qu'une action côté serveur prend vt_BlockName.
Une modale n'a pas de titre natif
vt_Title existe dans les propriétés de certaines anciennes modales, mais aucun gabarit ne l'affiche. Placez le titre dans un bloc texte en haut du contenu de la modale. Les propriétés qui sont rendues : vb_closeCross, vb_closeClickOutside, vb_PanelMode, vt_Position, vt_Id.
Remplir une modale avant de l'afficher
BSPK_SET_PROCESS_VAR("vo_SelectedItemData"; {fullName: "John"; amount: 100})
$vo_WebResponse.reloadBlock("myModal")
$vo_WebResponse.vc_Action.push({vt_Action: "showModal"; vt_BlockName: "myModal"})
Posez les données, rechargez le bloc pour qu'il se rende avec elles, puis affichez-le. Afficher d'abord montre l'ancien contenu.
Voir aussi
- Les fonctions de rendu : le pendant côté client, configuré sur les événements
- Modal : les propriétés propres au bloc

