Gestion des valeurs en PHP
Avec cette nouvelle fonctionnalité, vous pouvez désormais créer et mettre à jour les valeurs des champs directement depuis votre code PHP. Cela permet un contrôle plus dynamique des données, sans avoir besoin d'interagir avec l'interface du back-office. Voici une explication détaillée sur la manière d'utiliser cette fonctionnalité efficacement.
Pourquoi utiliser PHP pour gérer les valeurs des champs ?
La gestion des valeurs de champs via PHP offre une flexibilité pour les développeurs qui souhaitent automatiser ou contrôler de manière programmatique le processus de saisie des données. Que vous importiez des données à partir de sources externes, que vous synchronisiez des données avec des systèmes tiers ou que vous pré-remplissiez des champs, cette fonctionnalité fournit une méthode efficace pour mettre à jour les valeurs des champs.
Création et mise à jour des valeurs des champs
Pour créer ou mettre à jour les valeurs des champs personnalisés dans vos entités, suivez les étapes ci-dessous. Assurez-vous que la structure du groupe est déjà définie ; cette méthode ne gère que les valeurs, et non la structure des groupes.
- Charger le groupe de champs: Pour commencer, chargez le groupe de champs pour lequel vous souhaitez créer ou mettre à jour les valeurs. Utilisez le service DataRetriever pour accéder à FieldGroupUpdater.
function someMethod()
{
$dataRetriever = DataRetrieverFacade::getInstance();
// L'ID de l'entité est optionnel, il est utilisé pour charger les données existantes du groupe de champs si nécessaire.
$fieldGroup = $dataRetriever->getFieldGroupUpdater('field_group_slug', $idEntity);
}
- Modifier les valeurs des champs: Une fois les données récupérées, vous pouvez modifier les valeurs comme nécessaire. Voici des exemples de modification d'une valeur de champ :
function someMethod()
{
..
/**
* BASIC FIELDS
*/
$fieldGroup->getField('field_text_slug')->setValue('My value');
$fieldGroup->getField('field_boolean_slug')->setValue(true);
$fieldGroup->getField('field_choices')->setValue([1,2]);
/**
* RELATION FIELDS
*/
$fieldGroup->getField('field_product_slug')->setValue($idProduct);
$fieldGroup->getField('field_category_slug')->setValue($idProduct);
/**
* GROUP FIELD: Access subfields
*/
$fieldGroup->getField('field_group_slug')->getField('field_slug')->setValue('value');
/**
* REPEATER FIELD
*/
$repeater = $fieldGroup->getField('field_repeater_slug');
// Add new row
$row = $repeater->createRow();
$row->getField('row_field_slug')->setValue(true);
$repeater->addRow($subRow);
// Get rows
$rows = $repeater->getRows();
foreach ($rows as $k => $row) {
// Delete a row
$repeater->removeRow($key);
// Update a row
$row->getField('field_slug')->setValue('My value');
}
/**
* FLEXIBLE REPEATER FIELD
*/
$repeater = $fieldGroup->getField('field_flex_repeater_slug');
// Add new row
$row = $repeater->createRow('choice_slug');
$row->getField('row_field_slug')->setValue(true);
$repeater->addRow($subRow);
// Get rows
$rows = $repeater->getRows();
foreach ($rows as $k => $row) {
// Delete a row
$repeater->removeRow($key);
// Update a row
$row->getField('field_slug')->setValue('My value');
}
}
- Valider et enregistrer les valeurs: Après avoir modifié les valeurs nécessaires, vous pouvez vérifier si vos données sont valides et les enregistrer en utilisant la méthode appropriée fournie par le module.
function someMethod()
{
..
// Boolean validation
$validation = $fieldGroup->validateFormData();
// Returns an array of errors or true if valid
$validation = $fieldGroup->validateFormData(true);
// Save the data for a specific ID; you can apply the same data to different entity IDs.
$fieldGroup->save($idEntity);
}
Cas d'utilisation de la gestion des valeurs via PHP
-
Importations de données automatisées : Intégrez des API tierces ou des sources de données externes pour enrichir automatiquement vos champs personnalisés.
-
Mises à jour en masse : Mettez rapidement à jour les valeurs des champs pour plusieurs entités en même temps, améliorant ainsi l'efficacité.
-
Définition conditionnelle des valeurs : Utilisez une logique conditionnelle pour définir ou modifier dynamiquement les valeurs en fonction de certains critères.
Exemple de code:
Voici un exemple complet de création et de mise à jour d'une valeur de champ personnalisée de manière programmatique :
function someMethod()
{
$idCustomer = Context::getContext()->customer->id;
$dataRetriever = DataRetrieverFacade::getInstance();
$fieldGroup = $dataRetriever->getFieldGroupUpdater('field_group_slug');
$fieldGroup->getField('field_slug_text')->setValue('My value !');
$fieldGroup->getField('field_slug_color')->setValue('#ffffff');
$fieldGroup->save($idCustomer);
}