Répéteur flexible
Un champ de type repeater permet aux utilisateurs de créer un ensemble de champs qui peuvent être dupliqués plusieurs fois dans un formulaire. Il est particulièrement utile dans les scénarios où plusieurs entrées de données similaires sont nécessaires, telles que des variations de produit ou plusieurs coordonnées. Ce type de champ comprend également une interface de glisser-déposer pour trier les entrées répétées, améliorant ainsi la convivialité pour la gestion de structures de données complexes, telles que les différents blocs d'une landing page.
Captures d'écran
Affichage du champ dans le formulaire :
![]()
Affichage du champ dans le groupe de champs :
Configuration
-
Paramètres :
- Nom : L'étiquette du champ.
- Slug : L'identifiant technique unique.
- Champs : Les champs individuels inclus dans chaque répétition du répéteur.
-
Validation :
- Requis : Détermine si au moins un ensemble de champs doit être rempli.
- Nombre min d'éléments : Nombre minimum de répétitions requis.
- Nombre max d'éléments : Nombre maximum de répétitions autorisées.
-
Design :
- Instructions : Texte affiché à côté du champ fournissant des détails sur les données nécessaires.
- Largeur : La largeur du champ dans le formulaire.
- Classes : Classes CSS personnalisées pour le style du champ.
- ID : Attribut ID personnalisé pour le champ.
- Texte avant : Texte additionnel affiché avant le champ.
- Texte après : Texte additionnel affiché après le champ.
Format de retour
- Type : array
- Valeur :
[
[
'type' => 'option_slug_1',
'values' => [
'sub_field_slug_one' => 'Valeur du premier élément',
],
],
[
'type' => 'option_slug_2',
'values' => [
'sub_field_slug_two' => 'Valeur du deuxième élément',
],
],
]
Utilisation
/some-template.tpl
{* Object or Entity and Id *}
{assign var="data" value=$modules.customfieldgroups.data->get($product)}
{assign var="data" value=$modules.customfieldgroups.data->get('product', $product.id)}
{foreach from=$data.field_group_slug.field_slug item=row}
{if $row.type eq "group_slug_one"}
{include file=".." item=$row.values}
{elseif $row.type eq "group_slug_two"}
{include file=".." item=$row.values}
{/if}
{/foreach}
/SomeClass.php
function someMethod()
{
$dataRetriever = DataRetrieverFacade::getInstance();
$data = $dataRetriever->get($object); // Object
$data = $dataRetriever->get('product', $idProduct); // Entity and id
$elements = $data['field_group_slug']['field_group_slug'];
foreach($elements as $element) {
$values = $element['values'];
switch($element['type']) {
case "group_slug_one":
..
break;
case "group_slug_two":
..
break;
..
}
}
}

