# Paramètres des Smart Structures

Les paramètres sont des Smart Fields d'un type particulier. Leur valeur n'est pas propre à chaque Smart Element mais est commune à tous les Smart Elements d'une Smart Structure.
Ils permettent notamment de stocker des constantes (préfixe de titre, etc.).

# Configuration des paramètres d'une Smart Structure

# Déclaration des paramètres de Smart Structure

La définition des paramètres d'une Smart Structure est équivalente à la définition des Smart Fields. La déclaration des paramètres se fait dans la balise structure-configuration/parameters.

Exemple issu de la structure IUSER :

<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:structure-configuration name="IUSER" >
        <smart:parameters>
            <smart:field-set name="us_fr_default" type="frame" label="Paramètre" access="ReadWrite">
                <smart:field-account name="us_defaultgroup" label="Groupe par défaut" access="ReadWrite">
                    <smart:field-option name="match">group</smart:field-option>
                </smart:field-account>
            </smart:field-set>
        </smart:parameters>
    </smart:structure-configuration>
</smart:config>

Méthodes PHP pour gérer les paramètres :

  • Anakeen\SmartElement::getFamilyParameterValue()
  • Anakeen\SmartElement::getParameterFamilyRawValue()

# Réinitialisation des paramètres

L'attribut structure-configuration/parameters/@reset efface les valeurs des paramètres. Cela implique que les déclarations des valeurs initiales qui suivent seront prises en compte.

<smart:parameters reset="true">
   ...
</smart:parameters>

WARNING

Cette directive ne supprime pas les déclarations. Voir reset fields.

# Valeurs initiales des paramètres

Les valeurs initiales des paramètres sont posées lors du premier enregistrement des paramètres. Si le fichier de configuration est de nouveau importé la valeur du paramètre restera inchangée sauf si la directive reset est indiquée.

Balise Description Options
parameters/@reset (bool)Déenregistre toutes les valeurs des paramètres déjà enregistrées false par défaut
defaults/initial/@field Réference au Smart Field de structure obligatoire
defaults/initial/@reset (bool)Indique si la valeur doit être réenregistré (la valeur enregistrée précédement est écrasée) false par défaut
defaults/initial/@inherit (bool)Indique si la valeur doit être déenregistré - Dans ce cas, elle prendra celle de ses parents false par défaut
defaults/initial/ valeur brute du paramètre
defaults/initial/field-callable/@function référence à une méthode PHP méthode statique ou __invoke )
defaults/initial/field-argument/@type string , field, property "field" : la valeur doit être une référence à un Smart Field, "property" : la valeur doit être une des propriétés d'un Smart Element (initid, locked, ...)
defaults/initial/field-argument/ valeur de l'argument (nom du Smart Field si type est field)

La balise structure-configuration/defaults/initial permet de configurer la valeur initiale d'un paramètre. L'attribut structure-configuration/defaults/initial/@field indique la référence du paramètre. La valeur est indiquée dans le contenu de la balise.

Il est possible de faire référence à une méthode statique PHP (ou une classe avec une méthode __invoke ) à la place d'une valeur statique. La référence de la méthode est indiquée dans l'attribut structure-configuration/defaults/initial/field-callable/@function Les éventuels paramètres peuvent être de deux types : structure-configuration/defaults/initial/field-argument/@type

  • string : la valeur de la balise est passée en argument
  • field : la valeur du Smart Field est passée en argument
  • property : la valeur de la propriété du Smart Element est passée en argument

L'ordre des arguments passé à la méthode est celui déclaré dans le xml.

<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:structure-configuration name="MY_STRUCTURE" >
        <smart:parameters>
            <smart:field-set name="my_fr_parameters" type="frame" label="Paramètre" access="ReadWrite">
                <smart:field-text name="my_mailfrom" label="Adresse mail" access="ReadWrite"/>
                <smart:field-date name="my_date" label="Date limite" access="ReadWrite"/>
            </smart:field-set>
        </smart:parameters>
        <smart:defaults>
            <smart:initial field="my_mailfrom">test@example.net</smart:initial>
            <smart:initial field="my_date">
                <!-- 7 jours après la date du jour -->
                <smart:field-callable function="My\Utils\Date::dayInterval"/>
                <smart:field-argument type="string">7</smart:field-argument>
            </smart:initial>
        </smart:defaults>
    </smart:structure-configuration>
</smart:config>

Exemple de calcul du paramètre my_date avec le fichier vendor/My/Utils/Date.php.

<?php
namespace My\Utils;
class Date
{
  public static function dayInterval($day)
  {
    return date('Y-m-d', strtotime(sprintf("now + %d days", $day)));
  }
}

La valeur du paramètre est recalculée à chaque appel de la méthode Anakeen\SmartElement::getFamilyParameterValue().

Pour les tableaux, il est aussi possible de configurer une valeur initiale dans cas, la valeur doit contenir l'ensemble des valeurs de chaque ligne du tableau au format JSON. La valeur peut aussi contenir la référence (field-callable) à une méthode qui retournera un tableau indexé contenant les valeurs de chaque rangée.

Les valeurs initiales des paramètres contenus dans un tableau (les colonnes) peuvent aussi sont utilisés. Cela écrasera la valeur initiale données par le tableau si celui-ci a aussi une valeur initiale.

Les colonnes peuvent avoir des valeurs par défaut, elles sont utilisés seulement dans le centre d'administration lorsqu'on ajoute des rangées dans le tableau. Elle contiennent la valeur d'une cellule lorsque une rangée est ajoutée. Elles ne sont pas modifiables via le centre d'administration.