# 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 argumentfield
: la valeur du Smart Field est passée en argumentproperty
: 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.