Hallo,
Ich schreibe ein Plugin, welches jeder Postion eines Orders unter bestimmten Bedingungen Attribute hinzufügt, Frontent-Bestellungen wie auch Backend-Bestellungen
Dazu before-hooke Ich die Core Klassenmethode sOrder->sSaveOrder() weil diese der Punkt ist in der ein Order final gespeichert wird. Das klappt auch gut:
In meiner Bootstrap.php wird dann auch meine onBeforeSaveOrder(Enlight_Event_EventArgs $args) aufgerufen, so wie es sein soll.
Mit $args->getSubject() bekomme Ich dann die Proxy-Klasse für sOrder, welche den Array sBasketData enthält, welcher wiederum einen Key _content _enthält.
Wenn Ich auf diesen zugreife, bekomme ich null zurück, obwohl der Debugger mir definitiv Elemente (Order Positionen) anzeigt.
Wie greife Ich korrekt auf die einzelnen Order Positionen zu?
Hier meine Bootstrap.php:
<?php /**
* Created by PhpStorm.
* User: michi
* Date: 10.05.16
* Time: 16:38
*/
class Shopware_Plugins_Backend_BbRabattProPositionPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
public function getVersion()
{
return '1.0.0';
}
public function getLabel()
{
return 'RabattProPosition-Plugin von Blauband';
}
public function install()
{
$this->subscribeEvent( 'sOrder::sSaveOrder::before', 'onBeforeSaveOrder' ); return true; } public function onBeforeSaveOrder(Enlight\_Event\_EventArgs $args){ // following 3 lines only work if the Advanced Promotion Suite Plugin is installed! $sql = "SELECT \* FROM `s_plugin_promotion` WHERE `type` = 'product.percentage' AND `active` = ?"; //$promotions =Shopware()-\>Db()-\>fetchAll($sql, [1]); // try to get order positions //$orderProxy = $args-\>getSubject(); //$basketData = $orderProxy-\>sBasketData; //$i = count($basketData); } }
Bin um jeden Hinweis dankbar!