Werte aus Formularfeld in Datenbank schreiben

Du kannst im Event abfragen, von welcher Controller Action man gekommen ist. So kann man das auf eine Action herunter brechen => dein Code wird also nur dann ausgeführt. Musst dir allerdings alles aus dem Event Parameter holen, denn dort steckt alles drin, was du brauchst bzw. wissen musst:

/**
 * @var \Enlight_Controller_Action $controller
 */
$controller = $args->getSubject();
/**
 * @var \Enlight_Controller_Request_Request $request
 */
$request = $controller->Request();

/**
 * @var \Enlight_View_Default $view
 */
$view = $controller->View();

if (strtolower($request->getActionName()) === 'meineaction') {
    // hier dein Code
}

Ich würde dir auch empfehlen in Shopware mit dem Container zu arbeiten, also nicht mit dem Shopware() Singleton call, denn der ist veraltet. Zugegeben, in der Dokumentation steht auch nur ganz klein irgendwo dabei, dass sich das meiste noch auf die alte Plugin Struktur bezieht. Man muss hier also schon wissen, was sich auf welche Plugin Struktur bezieht und was gleich geblieben ist. Das findet meiner Meinung nach zu wenig Erwähnung in der Doku.

Eine weitere Sache noch: Grundsätzlich kannst du auf drei verschiedene Art und Weisen auf die Datenbank in Shopware zugreifen:

  1. Mit dem Zend_Db_Adapter: Nicht mehr zu empfehlen, weil stark veraltet und nur noch vereinzeilt bei alten Core Klassen in Benutzung
  2. Mit Doctrine’s DBAL: Schon eher zu empfehlen, ist vorallem der empfohlene Weg im Frontend Bereich
  3. Mit Docrtine ORM: Der wohl beste wählbare Weg, meist  aber etwas komplizierter als DBAL und man sollte hier schon wissen, was man tut.

Ich empfehle dir auch nicht die Secure Events zu verwenden, denn die werden nur getriggert, wenn sich eine HTTP Anfrage dahinter befindet, hingegen die normalen Events immer. Also einfach

Enlight_Controller_Action_PostDispatch_Frontend_Account

verwenden, anstatt von

Enlight_Controller_Action_PostDispatchSecure_Frontend_Account

 

 

MFG

 

derwunner

1 „Gefällt mir“