CortyCorty MemberComments: 0 Received thanks: 0 Member since: January 2018

Hallo zusammen,

wir haben für unseren Shop ein Plugin entwickelt, welches beim Speichern eines neuen Artikels Änderungen an diesem vornimmt.
Hierzu hängen wir uns an das Event "Shopware\Models\Article\Article::prePersist".
Zusätzlich zum Artikel müssen wir auch auf die Artikelattribute zugreifen. Hier ein kurzer Code-Schnipsel aus der Bootstrap.php:

private function registerEvents() {
	$this->subscribeEvent(
		'Shopware\Models\Article\Article::prePersist',
		'onInsertArticle'
	);
}

public function onInsertArticle(Enlight_Event_EventArgs $args)
{
	$modelManager = $args->get('entityManager');
	$article = $args->get('entity');

	// get/access article attributes
	$attribute = $article->getMainDetail()->getAttribute();
	$attr1 = $attribute->getAttr1();

	// ...
}

Dies funktionierte in unserer bisherigen Shopware-Version 5.1.1 ohne Probleme; $attribute enthielt das gefüllte Attribute-Model.

Nach einem Shopware-Update auf 5.3.6 liefert uns getAttribute() nun immer NULL zurück (auch die Umstellung auf das Event "postPersist" macht hier keinen Unterschied, während die Variable beim Update-Event eines bestehenden Artikels, d.h. "Shopware\Models\Article\Article::preUpdate", vollständig gefüllt ist).

Es verhält sich so, als hätte sich die Insert-Logik für neu angelegte Artikel in einem Shopware-/Doctrine-Update so verändert, dass die Attribut-Assoziation noch nicht existiert, wenn ::prePersist (oder ::postPersist) gefeuert wird.

Habt ihr eine Lösung, wie wir beim Anlegen eines neuen Artikels weiterhin auf die Attribute (lesend und schreibend) zugreifen können, wie es vor dem Update noch ging?

Vielen Dank schonmal und schöne Grüße,
Markus

Answers

  • eBerlineBerlin MemberComments: 1 Received thanks: 0 Member since: July 16

    hey , ich habe aktuell das gleiche problem. habt ihr dazu mittlerweile eine lösung finden können ?

    liebe grüße, erik

Sign In or Register to comment.