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