Werte aus Formularfeld in Datenbank schreiben

@derwunner schrieb:

Hallo,

 

also wenn ich dich richtig verstehe, dann willst du zusätzlich einen Wert in der DB speichern, also zusätzlich zu dem bisherigen Standard-Verhalten. Genau dafür gibts Events, muss also nichts überschrieben werden. Klinke dich einfach danach ein und speichere deine Werte in der DB.

Denke bitte auch dran, die Formularfelder zu escapen, bzw. den von Shopware generierten escapten Wert zu benutzen, zwecks Angriffsmöglichkeiten via SQL Injections oder ähnliches.

 

 

MFG

 

derwunner

 

Tausend Dank für die Tipps. Hab mich eingelesen. 

Grundsätzlich habe ich mittlerweile herausgefunden, dass Shopware die Sache mit dem Rückschreiben in die Datenbank doch erledigt, und zwar, wenn man im input Feld folgenden Wert setzt: 

 name="profile[attribute][test]"

Die Frage bleibt, wie kann ich in eigenen Formularfeldern (Freitextfeld s_user_attributes) den vom User eingegeben Wert holen und dann in die DB Spalte zurückschreiben. 

public static function getSubscribedEvents()
    {
        return [          
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Account' => 'onFrontendPostDispatch',           
            'Shopware_Controllers_Frontend_Account::saveProfileAction::after' => 'onAction'
         ];

    }

Der PostDispatchSecure kommt für mich nicht in Frage, weil ich das ganze ja explizit nur dann ausführen möchte, wenn der User Änderung speichern klickt und damit wäre ich ja dann beim …:saveProfileAction::after ???

Jetzt kommt leider der blutige Anfänger in mir zum Tragen. Ich würde es mal so versuchen. Hab aber keine Idee, wie ich den $postData befüllen soll…Wäre die Vorgehensweise denn so grundsätzlich so richtig ? Ps meine Alert Box wird auch nicht ausgegben, daher die Frage, ob hier überhaupt was passiert…

public function onAction(\Enlight_Hook_HookArgs $args)
    {
        $userId = Shopware()->Session()->sUserId;

        $postData = $args->getSubject()->Request()->getPost();
        $test= $postData["??????????];

        $sqlAccount = 'UPDATE s_user_attributes SET test = ? WHERE userID = ?';
        Shopware()->db()->query($sqlAccount,array($test, $userId));

        echo 'alert("TEST geklappt");';

    }