Passa al contenuto principale

Classe mappatura

La classe custom può essere utilizzata quando i normali strumenti di mappatura non sono sufficienti ed è quindi necessario utilizzare una classe service per avere il dato trasformato.

Per creare una classe custom per elaborare il campo da sincronizzare è necessario:

  • Estendere la classe astratta Sintra\SyncBundle\Service\CustomObjectFieldClassProvider\AbstractCustomObjectFieldProvider
  • Registrarla come servizio

Esempio di classe custom:

<?php

namespace App\Service;

use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
use Sintra\SyncBundle\Service\CustomObjectFieldClassProvider\AbstractCustomObjectFieldProvider;
use Pimcore\Model\DataObject\SalesChannel;

#[AutoconfigureTag(self::CUSTOM_OBJECT_FIELD_CLASS_KEY)]
class YourClassProvider extends AbstractCustomObjectFieldProvider
{
public function getPrettyName(): string
{
return "PRODUCT - Custom - Images list separated by comma";
}

public function getCustomObjectFieldResult(AbstractObject $dataObject, SalesChannel $salesChannel, string $language = null): array|string
{
// Do here your logic and return a string or an array
}
}

informazioni

Il metodo getPrettyName() deve ritornare un valore che inizia con {NOME_CLASSE} - per una naming convention

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