LSioFormat: handle multiple formats for generated fields

This commit is contained in:
Benjamin Renard 2021-04-27 12:13:32 +02:00
parent 6d95f9bfd5
commit 7005100ac4
2 changed files with 12 additions and 7 deletions

View file

@ -38,7 +38,7 @@ création du type d'&LSobject;. En conséquence :
), ),
'generated_fields' => array ( 'generated_fields' => array (
'[attribute 3]' => '[LSformat]', '[attribute 3]' => '[LSformat]',
'[attribute 4]' => '[LSformat]', '[attribute 4]' => array('[LSformat1]', '[LSformat2]', ...)
[...] [...]
) )
), ),
@ -87,8 +87,8 @@ création du type d'&LSobject;. En conséquence :
<listitem> <listitem>
<simpara>Tableau associatif permettant de définir des &LSformats; pour générer des valeurs <simpara>Tableau associatif permettant de définir des &LSformats; pour générer des valeurs
d'attributs automatiquement. Ce tableau contient en clé, le nom de l'attribut à généré, d'attributs automatiquement. Ce tableau contient en clé, le nom de l'attribut à généré,
et en valeur associée, le &LSformat; à utilisé. Ce &LSformat; est composé à l'aide des et en valeur associée, un ou plusieurs &LSformat; à utiliser pour générer ses valeurs. Ces
valeurs des autres attributs de l'objet.</simpara> &LSformat; sont composés à l'aide des valeurs des autres attributs de l'objet.</simpara>
</listitem> </listitem>
</varlistentry> </varlistentry>

View file

@ -127,11 +127,16 @@ class LSioFormatDriver extends LSlog_staticLoggerClass {
if (!isset($retone[$attr])) $retone[$attr] = array(); if (!isset($retone[$attr])) $retone[$attr] = array();
$retone[$attr][] = $one[$key]; $retone[$attr][] = $one[$key];
} }
foreach ($generated_fields as $attr => $format) { foreach ($generated_fields as $attr => $formats) {
$value = getFData($format, $retone); $retone[$attr] = array();
if (!empty($value)) { foreach (ensureIsArray($formats) as $format) {
$retone[$attr] = array($value); $value = getFData($format, $retone);
if (!is_empty($value)) {
$retone[$attr][] = $value;
}
} }
if (empty($retone[$attr]))
unset($retone[$attr]);
} }
$retall[] = $retone; $retall[] = $retone;
} }