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

fillInBoisson

Et ensuite ?

Comment envoyer des données supplémentaires lors de la sauvegarde pour réaliser un traitement spécifique ?