Comment définir la valeur par défaut d’un Smart Field
Attention
La valeur par défaut est la valeur qui sera affectée à un Smart Field lors de la création d’un Smart Element.
Recommandation
Si vous n’êtes pas familier avec les valeurs par défaut de Smart Fields
et leur fonctionnement, il est fortement
recommandé de lire la documentation associée
disponible ici
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement avoir créé une Smart Structure.
Comment procéder
Pour l’exemple, nous ajouterons deux Smart Fields techniques à la Smart Structure Plat
.
Le fichier concerné est
donc le suivant : src/vendor/<vendorName>/<moduleName>/SmartStructures/Plat/100-PlatStructure.xml
.
Le premier Smart Field sera calculé avec une valeur fixe. le second sera calculé avec une valeur dynamique.
Valeur fixe
Ajoutons un champ de description du plat plat_description
. Sa valeur initiale sera définie par une valeur fixe.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
<smart:enumerates>
<smart:enum-configuration name="Plat_Type">
<smart:enum name="ENTREE" label="Entrée" />
<smart:enum name="PRINCIPAL" label="Plat principal" />
<smart:enum name="DESSERT" label="Dessert" />
</smart:enum-configuration>
</smart:enumerates>
<smart:structure-configuration name="PLAT" label="Plat">
<smart:extends ref="CONSOMMABLE"/> <!-- La smart structure PLAT hérite de la smart structure CONSOMMABLE -->
<smart:icon file="plat.png"/>
<smart:class>Cogip\Restauratec\SmartStructures\Plat\PlatBehavior</smart:class>
<smart:fields>
<!-- extended="true" indique que l’on récupère ici la frame du parent (Consommable) à laquelle on ajoute d’autres Smart Fields -->
<smart:field-set name="consommable_frame" extended="true">
<smart:field-enum name="plat_type" label="Type de plat" relation="Plat_Type" access="ReadWrite" />
<smart:field-date name="plat_validity_date" label="Disponible jusqu’au" access="ReadWrite" />
<smart:field-text name="plat_abstract" label="Résumé" access="ReadWrite" />
</smart:field-set>
</smart:fields>
<smart:hooks />
<smart:defaults>
<smart:default field="plat_abstract">Entrez un résumé...</smart:default>
</smart:defaults>
</smart:structure-configuration>
</smart:config>
Valeur dynamique
Ajoutons un champ de date de création du plat plat_creation_date
. Sa valeur initiale sera définie par une valeur
dynamique.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
<smart:enumerates>
<smart:enum-configuration name="Plat_Type">
<smart:enum name="ENTREE" label="Entrée" />
<smart:enum name="PRINCIPAL" label="Plat principal" />
<smart:enum name="DESSERT" label="Dessert" />
</smart:enum-configuration>
</smart:enumerates>
<smart:structure-configuration name="PLAT" label="Plat">
<smart:extends ref="CONSOMMABLE"/> <!-- La smart structure PLAT hérite de la smart structure CONSOMMABLE -->
<smart:icon file="plat.png"/>
<smart:class>Cogip\Restauratec\SmartStructures\Plat\PlatBehavior</smart:class>
<smart:fields>
<!-- extended="true" indique que l’on récupère ici la frame du parent (Consommable) à laquelle on ajoute d’autres Smart Fields -->
<smart:field-set name="consommable_frame" extended="true">
<smart:field-enum name="plat_type" label="Type de plat" relation="Plat_Type" access="ReadWrite" />
<smart:field-date name="plat_validity_date" label="Disponible jusqu’au" access="ReadWrite" />
<smart:field-text name="plat_abstract" label="Résumé" access="ReadWrite" />
<smart:field-date name="plat_creation_date" label="Date de création du plat" access="ReadWrite" />
</smart:field-set>
</smart:fields>
<smart:hooks />
<smart:defaults>
<smart:default field="plat_abstract">Entrez un résumé...</smart:default>
<smart:default field="plat_creation_date">
<smart:field-callable function="::getCreationDate"/>
</smart:default>
</smart:defaults>
</smart:structure-configuration>
</smart:config>
La valeur par défaut du champ plat_creation_date
fait appel à une fonction de la classe de comportement de la Smart
Structure PLAT
. Définissons la fonction getCreationDate
dans
src/vendor/<vendorName>/<moduleName>/SmartStructures/Plat/PlatBehavior.php
:
<?php
namespace Cogip\Restauratec\SmartStructures\Plat;
use SmartStructure\Fields\Plat as PlatFields;
class PlatBehavior extends \SmartStructure\Consommable
{
public function registerHooks()
{
parent::registerHooks();
}
public function getCreationDate() {
return date("Y-m-d");
}
}
Vérifier les valeurs par défaut
Attention
Pensez à effectuer une réinstallation afin que l’application prenne en compte les modifications effectuées :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Rendons-nous sur un formulaire de création d’un plat : http://localhost:8080/api/v2/smart-elements/PLAT/views/!defaultCreation.html
Les Smart Field créés sont alors préremplis avec les valeurs par défaut :
Et ensuite ?
Comment calculer automatiquement la valeur d’un Smart Field ?