Comment préremplir des Smart Fields lors de l’affichage du formulaire ?
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement savoir Comment déclencher un code javascript lors de la sélection d’un menu spécifique ?.
Comment procéder ?
Dans notre exemple, on souhaite préremplir les Smart Elements BOISSON avec une contenance par défaut à 25 cl à la
création. La méthode setValue permet de mettre à jour la valeur d’un Smart Field du Smart Element.
Recommandations
Si vous n’êtes pas familier avec la méthode setValue, il est recommandé de lire la documentation associée
disponible ici
Nous allons ajouter un script JavaScript à la vue de modification des BOISSON. Créer le fichier
src/public/boissonEdit.js :
window.ank.smartElement.globalController.registerFunction("boissonEdit", (controller) => {
controller.addEventListener(
"ready",
{
check: (seProps) => seProps.viewId === "!defaultCreation",
},
function setDefaultValues(event, smartElement, data) {
controller.setValue("boisson_capacity", { value: 25, displayValue: "25" });
}
);
});
Ajouter ce script aux Smart Elements BOISSON en modifiant
src/vendor/Cogip/Restauratec/SmartStructures/Boisson/Render/BoissonEditRender.php :
<?php
namespace Cogip\Restauratec\SmartStructures\Boisson\Render;
use Cogip\Restauratec\SmartStructures\Consommable\Render\ConsommableEditRender;
use SmartStructure\Fields\Boisson as BoissonFields;
class BoissonEditRender extends ConsommableEditRender
{
public function getJsReferences(\Anakeen\Core\Internal\SmartElement $document = null)
{
$jsRefs = parent::getJsReferences($document);
$jsRefs['boissonEdit'] = new \Anakeen\Ui\JsAssetReference("/boissonEdit.js");
return $jsRefs;
}
}
Vous pouvez maintenant déployer vos modifications :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Et voir le résultat sur une BOISSON en création ou modification :
http://localhost:8080/api/v2/smart-elements/BOISSON/views/!defaultCreation.html
