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 un Smart Field de "test" à la Smart Structure Plat
.
Le fichier concerné est donc
le suivant : src/vendor/<vendorName>/<moduleName>/SmartStructures/Plat/100-PlatStructure.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
<smart:structure-configuration name="PLAT" label="Plat">
<smart:extends ref="CONSOMMABLE"></smart:extends>
<smart:icon file="plat.png" />
<smart:class>Cogip\Restauratec\SmartStructures\Plat\PlatBehavior</smart:class>
<smart:fields reset="true">
<smart:field-set name="consommable_frame" extended="true">
<smart:field-enum name="plat_type" label="Type de plat" relation="Plat_Type" access="Read" />
<smart:field-date name="plat_validity_date" label="Disponible jusqu'au" access="Read" />
<smart:field-text name="plat_static_value" label="Valeur fixe" access="ReadWrite" />
</smart:field-set>
</smart:fields>
<smart:hooks />
<smart:defaults reset="true">
<smart:default field="plat_static_value"></smart:default>
</smart:defaults>
</smart:structure-configuration>
</smart:config>
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:structure-configuration name="PLAT" label="Plat">
<smart:extends ref="CONSOMMABLE"></smart:extends>
<smart:icon file="plat.png" />
<smart:class>Cogip\Restauratec\SmartStructures\Plat\PlatBehavior</smart:class>
<smart:fields>
<smart:field-set name="consommable_frame" extended="true">
<smart:field-enum name="plat_type" label="Type de plat" relation="Plat_Type" access="Read" />
<smart:field-date name="plat_validity_date" label="Disponible jusqu'au" access="Read" />
<smart:field-text name="plat_abstract" label="Résumé" access="ReadWrite" />
</smart:field-set>
</smart:fields>
<smart:hooks />
<smart:defaults>
<smart:default field="plat_review">Voici ma valeur fixe</smart:default>
</smart:defaults>
</smart:structure-configuration>
</smart:config>
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 la page de la Smart Structure PLAT dans le Development Center -> Smart Structure -> Plat -> Onglet
Fields
-> Sous-onglet Default Values
ou via l'URL suivante :
http://localhost:8080/devel/smartStructures/PLAT/fields/defaults
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:structure-configuration name="PLAT" label="Plat">
<smart:extends ref="CONSOMMABLE"></smart:extends>
<smart:icon file="plat.png" />
<smart:class>Cogip\Restauratec\SmartStructures\Plat\PlatBehavior</smart:class>
<smart:fields reset="true">
<smart:field-set name="consommable_frame" extended="true">
<smart:field-enum name="plat_type" label="Type de plat" relation="Plat_Type" access="Read" />
<smart:field-date name="plat_validity_date" label="Disponible jusqu'au" access="Read" />
<smart:field-text name="plat_static_value" label="Valeur fixe" access="ReadWrite" />
<smart:field-date name="plat_dynamic_value" label="Date de création du plat" access="ReadWrite" />
</smart:field-set>
</smart:fields>
<smart:hooks />
<smart:defaults reset="true">
<smart:default field="plat_static_value">Ma valeur fixe</smart:default>
<smart:default field="plat_dynamic_value">
<smart:field-callable function="::getDynamicValue"/>
</smart:default>
</smart:defaults>
</smart:structure-configuration>
</smart:config>
Voici l'emplacement du fichier de comportement de la Smart Structure PLAT dans lequel cette méthode getDynamicValue
se
trouve plat : 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 getDynamicValue()
{
return date("Y-m-d");
}
}
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 la page de la Smart Structure PLAT dans le Development Center -> Smart Structure -> Plat -> Onglet
Fields
-> Sous-onglet Default Values
ou via l'URL suivante :
http://localhost:8080/devel/smartStructures/PLAT/fields/defaults
Et ensuite ?
Comment calculer automatiquement la valeur d'un Smart Field ?