Zum Hauptinhalt springen
Version: v12.4

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);
}
}