Passa al contenuto principale

Operatore Mappatura

L'operatore custom può essere utilizzato quando si ha necessità di trasformare un singolo campo, come ad esempio estrarre solo l'unità di misura da un campo quantity value.

Per creare un operatore custom per elaborare il campo da sincronizzare è necessario:

  • Estendere la classe astratta Sintra\SyncBundle\Service\CustomOperatorFieldClassProvider\AbstractCustomOperatorFieldProvider
  • Registrarla come servizio

Esempio di operatore custom:

<?php

namespace Sintra\SyncBundle\Service\CustomOperatorFieldClassProvider;

use Pimcore\Model\DataObject\Data\QuantityValue;
use Pimcore\Model\DataObject\SalesChannel;
use Pimcore\Model\DataObject\SalesChannelMapping;
use Sintra\SyncBundle\Exception\InvalidCustomOperatorTypeException;
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;

#[AutoconfigureTag(self::CUSTOM_OPERATOR_FIELD_CLASS_KEY)]
class QuantityValueExtractUnit extends AbstractCustomOperatorFieldProvider
{
public function getPrettyName(): string
{
return 'Quantity Value → Only unit';
}

public function getCustomOperatorFieldResult(SalesChannel $saleChannel, SalesChannelMapping $channelMapping, mixed $fieldValue): string
{
if (empty($fieldValue)) {
return '';
}

if (!$fieldValue instanceof QuantityValue) {
throw new InvalidCustomOperatorTypeException("Invalid value for custom operator {$this->getPrettyName()},
the value is not an instance of QuantityValue");
}

return $fieldValue->getUnit()->getAbbreviation() ?? '';
}
}


informazioni

Per mantenere armonia nel front-end è preferibile che getPrettyName() ritorni i valori separati da freccia Quantity Value → Only unit.

Una volta fatto questo sarà disponibile nella select all'interno del SalesChannelMapping. Select Operatore Custom

Operatori disponibili​

Elenco dei data transformer selezionabili nel Data Transform della mappatura. L'ordine è quello della select.

OperatoreTrasformazione
Asset → Url stringURL pubblico dell'asset
Boolean → Integertrue, 1, yes, on → 1, altrimenti 0
Color → Trim last 2 chars from hex color#RRGGBBAA → #RRGGBB. Se il risultato non è un hex a 6 caratteri, stringa vuota
Comma-separated String → Arraya, b, c → array ["a", "b", "c"] (spazi rimossi, valori vuoti esclusi)
Comma-separated String → Encoded Arraya, b, c → stringa JSON ["a","b","c"]. Se non è una stringa → []
Empty Product 404 Handle → Sales Channel Default 404 HandleSe il valore è vuoto, usa il Default 404 Handle del SalesChannel
Int/string → BooleanValore non vuoto → true, vuoto → false
Multiselect → Array string escapea,b → stringa JSON ["a","b"]
Null → Empty stringnull → stringa vuota; gli altri valori restano invariati
Quantity Value → Only unitSolo l'abbreviazione dell'unità, es. kg
Quantity Value → Only valueSolo il valore numerico, senza unità
Quantity Value → StringValore e unità, es. 10 kg
String → Capitalize First ≥ 3.23.1seta foulard → Seta foulard. Solo il primo carattere diventa maiuscolo
String → Lower StringSeta Foulard → seta foulard. Se non è una stringa, stringa vuota
String → Title Case ≥ 3.23.1seta foulard → Seta Foulard. Iniziale maiuscola su ogni parola
String/Int/Bool -> ArrayAvvolge il valore in un array, es. seta → ["seta"]
Timestamp → Date (YYYY-MM-DD)Timestamp intero → 2026-10-26. Se non è un intero → null
Timestamp → Date (YYYY-MM-DDTHH:MM:SS)Timestamp intero → 2026-10-26T09:12:00. Se non è un intero → null