Hi!
Ich habe ein Problem mit dem Emotion Component Handler. Mein Emotions-Widget scheint also korrekt zu funktionieren, aber ich möchte die Daten verarbeiten, bevor das Widget angezeigt wird. Ich habe es genau so gemacht, wie es hier geschrieben steht:
Mein Komponenten-Handler sieht folgendermaßen aus:
criteriaFactory = $criteriaFactory;
$this->shopwareConfig = $shopwareConfig;
$this->additionalTextService = $additionalTextService;
}
public function supports(Element $element)
{
return $element->getComponent()->getTemplate() === 'emotion_custom_artikel';
}
public function prepare(PrepareDataCollection $collection, Element $element, ShopContextInterface $context)
{
$productNumber = $element->getConfig()->get('selected_product_number');
$collection->getBatchRequest()->setProductNumbers('my-unique-request', [$productNumber]);
}
public function handle(ResolvedDataCollection $collection, Element $element, ShopContextInterface $context)
{
$product = current($collection->getBatchResult()->get('my-unique-request'));
$element->getData()->set('product', $product);
// do some handle logic and fill the element data, which will be available in your template under $Data.key
$element->getData()->set('key', 'value');
}
}
Dann sieht mein Service so aus:
Ich habe ein Debug durchgeführt und während ich mein Widget im Frontent lade, geht es nur zum Konstruktor der Klasse, aber nie zu einer der anderen Methoden (supports, prepare, handle).
Ich habe ein Debug in Shopware/Bundle/EmotionBundle/Service/EmotionElementService.php (registerComponentHandlers Methode) durchgeführt und kann meinen Component Handler im Array sehen.
Die Frage ist … Was mache ich falsch?