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 par défaut fixe

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

Valeur par défaut dynamique

Et ensuite ?

Comment calculer automatiquement la valeur d'un Smart Field ?