Zum Hauptinhalt springen

Attributwert überschreiben

Event

Siehe Event Pre-Update-Attribute-Value

Event Subscriber

In bestimmten Fällen, etwa wenn statt eines internen Identifiers (z.B. 1) eine lesbare Bezeichnung (z.B. red) verwendet werden soll, besteht die Möglichkeit, den Wert im Rahmen eines Events zu modifizieren. Dies geschieht durch einen Event-Subscriber, der vor dem Speichern des Attributwerts eingreift und den Wert bei Bedarf ersetzt.

Beispiel

<?php

namespace AppBundle\EventListener;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Twocream\ProductAttributeBundle\Event\TwocreamProductAttributeEvents;
use Twocream\ProductAttributeBundle\Event\UpdateAttributeValueEvent;

class TwocreamProductAttributeListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
TwocreamProductAttributeEvents::PRE_UPDATE_ATTRIBUTE_VALUE => 'preUpdateAttributeValue'
];
}

public function preUpdateAttributeValue(UpdateAttributeValueEvent $event): void
{
$attributeValueData = $event->getAttributeValueData();

if (
!empty($attributeValueData['data']['fieldName'])
&& $attributeValueData['data']['fieldName'] == 'SAP_COLOR'
) {
$colors = [
1 => 'red',
45 => 'yellow',
132 => 'green'
];
$sapValue = $attributeValueData['data']['value'];

$attributeValueData['data']['value'] = $colors[$sapValue] ?? $sapValue;
}

$event->setAttributeValueData($attributeValueData);
}
}