Hallo liebe Shopware-User!
Ich schreibe gerade ein Shopware Plugin, welches eine Kontroller-Methode ersetzen soll.
Die zu ersetzende Methode hat auch Parameter, aber das konnte ich bereits lösen.
Das erfolgsbremsende Problem ist, dass die Original-Methode auch Methoden innerhalb dessen Klasse aufruft, für welches mein Plugin keinen Kontext besitzt und es kommt zum Fehler.
Ich habe von der hilfreichen executeParent() Methode gehört, welches simulierend die Elternmethode aufruft. Aber ich habe Probleme dies zu implementieren.
Hier mein Codeschnipsel.
public static function getSubscribedEvents()
{
return [
'Enlight_Controller_Action_PostDispatchSecure_Backend' => 'onOrderPostDispatch',
'Shopware_Controllers_Backend_Order::getList::replace' => 'getListReplace'
];
}
public function getListReplace(\Enlight_Hook_HookArgs $args)
{
$request = $args->getSubject()->Request();
$filter = $request->getParam('filter');
$sort = $request->getParam('sort');
$offset = $request->getParam('offset');
$limit = $request->getParam('limit');
// Original-Methodenaufruf: $sort = $this->resolveSortParameter($sort);
// $sort = $args->getSubject()->executeParent(Shopware_Controllers_Backend_Order::resolveSortParameter, $args = [$sort]);
// $sort = $this->executeParent('resolveSortParameter', $args = [$sort]);
// $sort = $args->setReturn($args->getSubject()->executeParent('resolveSortParameter', $args->getArgs()));
$sort = $args->getSubject()->executeParent('resolveSortParameter', $args = [$sort]);
...
getList() ist die Methode, die ich ersetzen möchte. Der Hook funktioniert. Aber ich schaffe es nicht, dem executeParent() den fehlenden Kontext zu geben.
ich will auch nicht alle aufgerufende Methoden, die man in der Order.php findet, ins Plugin hineinkopieren.
Bitte um Verzeihung falls die Frage komisch wirkt oder gänzlich als Anfängerfehler eingestuft wird,
ich versuche das Shopware Plugin noch zu schreiben ehe die 1Monat ShopwareDemo abgelaufen ist.