Account um Action erweitern -> bester Weg

Hallo,

ich habe folgende Anforderung:

Ich möchte dem User in seinem Userbereich (Account) eine neue Eingabemöglichkeit bereitstellen. So wie Versandadresse soll er einen Bonuscode eingeben können. Dieser soll gespeichert werden und auch aufgelistet.

Ich habe mir nun die Developer Doku durchgelesen und zum Teil funktioniert es auch schon, aber ich bin mir nicht sicher ob ich es ganz richtig implementziert habe.

Ich bitte um eure Tipps zu folgendem:

Ich habe mir im Verzeichnis Subscribers eine Datei Frontend.php erstellt. Diese habe ich auch in meiner services.xml angegeben

In der Frontend.php Datei Enlighte ich zwei Events

public static function getSubscribedEvents()
	{
		return [
           'Enlight_Controller_Action_Frontend_Account_saveTransaction' => 'saveTransactionAction',
           'Enlight_Controller_Action_Frontend_Account_Transaction' => 'onFrontendAccountTransaction'
		];
	}

Diese Funktionen werden auch aufgerufen, in der funktion onfrontendAccountTransaction möchte ich gerne die Gespeicherten Werte als Liste ausgeben

public function onFrontendAccountTransaction(\Enlight_Event_EventArgs $args)
    {
        // ausgabe von transactions
        $subject = $args->getSubject();

        $session = Shopware()->Session();
        $customerId = $session->sUserId;

        $txHashModel = Shopware()->Models()->getRepository('CCCCore\Models\UserTxHash');
        $txHashData = $txHashModel->findAll(array('c_user_id' => $customerId));

        $controller = $args->getSubject();
        $request = $controller->Request();
        $view = $controller->View();

        # $subject->View()->loadTemplate( __DIR__. '/../../Views/frontend/account/transaction.tpl');
        $view->assign('txHashDatas', $txHashData);
        #$view->sFormData = $txHashDatas;

        $args->setReturn(true);
        # return true;
    }

In der Variable $txHashData sind die Werte vorhanden. Soweit so gut, aber die Liste wird nicht ausgegeben. Mir fehlt der Zusammenhang zwischen Daten und Ausgabe. Ich habe Templates angelegt im Ordner Controllers\Frontend\Views\frontend\account\transaction_item.tpl aber wie kombiniere ich das mit meiner Funktion?

 Die zweite funktion speichert mir die Daten

public function saveTransactionAction(\Enlight_Event_EventArgs $args)
    {
        $controller = $args->getSubject();
        $request = $controller->Request();
        $view = $controller->View();
        $view->addTemplateDir($this->path . '/Resources/Views/');
        $response = $controller->Response();

        $submitTxHashNamespace = Shopware()->Container()->get('snippets')->getNamespace('frontend/account/reset_password');

        $postData = $request->getPost();

        $TxHash = $postData['Tx_Hash'];

        // first check if there is an tx Hash
        if (strlen($TxHash) < 1) {
            /*throw new Exception(
                $submitTxHashNamespace->get(
                    'noTxHashSet',
                    'No valid tx hash in the input field or input field empty!'
                )
            );*/
        }

        // check if the Hash is allready in the Database
        $txHashModel = Shopware()->Models()->getRepository('CCCCore\Models\UserTxHash');
        $txHashData = $txHashModel->findOneBy(array('c_tx_hash' => $TxHash));


        if (count($txHashData) > 0) {
            /*throw new Exception(
                $submitTxHashNamespace->get(
                    'txHashAllreadyInUse',
                    'The inserted tx hash is allready in use!'
                )
            );*/
        }


        // save new hash to DB
        $session = Shopware()->Session();
        $customerId = $session->sUserId;

        /** @var Customer $customer */
        $userTxHash = new UserTxHash;

        $userTxHash->setCTxHash($TxHash);
        $userTxHash->setCUserId($customerId);
        $userTxHash->setCStatus(1);
        $userTxHash->setCTxTimestamp(microtime(true));


        try { //persist the model into the model manager
            Shopware()->Models()->persist ($userTxHash);
            Shopware()->Models ()->flush();
        } catch (ORMException $e) {
            return $e->getmessage();
        }
        return '';
    }

das funktioniert sowiet auch, aber zB.: habe ich probleme mit den Exceptions. Wenn ich die einkommentiere bekomme ich eine Fehlermeldung das diese nicht gefunden werden kann.

Meine Frage nun, ist das der beste Weg das zu Implementieren? Wäre es nicht besser das in einem Controller abzuhandeln der den Account Controller erweitert? 

Aber wie kann ich das so einstellen? Irgend wie fehlt mir da der Zusammenhang.

Danke für eure Hilfe, ich bin um jeden Vorschlag froh!