SQL mit Filter Event ändern

Hallo liebe Leute,

ich würd gern neue Registrierungen von Kunden standardmässig nicht aktivieren um diese später manuell im Backend zu aktivieren.

Hab mir gedacht ich ändere dies einfach mit Hilfe des Filter Events Shopware_Modules_Admin_SaveRegisterMainDataAttributes_FilterSql   direkt im SQL Statement.

Hier der Listener:

  

 public function onSaveRegisterMainData_Filter(Enlight_Event_EventArgs $arguments){
        $return = $arguments->getReturn();

        $return[0] = '
            INSERT INTO s_user
            (
                password, email, paymentID, active, accountmode,
                validation, firstlogin, sessionID, affiliate, customergroup,
                language, subshopID, referer, encoder
            )
            VALUES (?,?,?,0,?,?,NOW(),?,?,?,?,?,?,?)
        ';

        return $return;
    }

Ich bekomme jetzt bei der Registrierung leider folgende Fehlermeldung:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /html/shopware/engine/Library/Zend/Db/Statement/Pdo.php:228 Stack trace: #0 /html/shopware/engine/Library/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array) #1 /html/shopware/engine/Library/Zend/Db/Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array) #2 /html/shopware/engine/Library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array) #3 /html/shopware/engine/Library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('\r\n I...', Array) #4 /html/shopware/engine/Library/Enlight/Components/Db/Adapter/Pdo/Mysql.php(75): Zend_Db_Adapter_Pdo_Abstract->query('\r\n I...', Array) #5 /html/shopware/engine/Shopware/Core/sAdmin.php(1737): Enlight_Components_Db_Adapter_Pdo_Mysql->query('\r\n I...', Array) #6 /html/shopware/engine/Shopware/Core/sAdmin.php(2035): sAdmin->sSaveRegisterMainD in /html/shopware/engine/Library/Zend/Db/Statement/Pdo.php on line 234
503 Service Unavailable

Die Anzahl der Parameter sollte eigentlich stimmen, hab das Original Statement übernommen und nur aus der 1 eine 0 gemacht.

Kann mir da jemand auf die Sprünge helfen?

Vielen Dank!

Martin

Hallo Martin,

du hast das falsche Event erwischt. Versuch mal Shopware_Modules_Admin_SaveRegisterMainData_FilterSql (man beachte das fehlende Attributes)

Das SQL aus dem Event das du benutzt erwartet nur einen Parameter, daher die Fehlermeldung.

1 Like

@t2oh4e schrieb:

Hallo Martin,

du hast das falsche Event erwischt. Versuch mal Shopware_Modules_Admin_SaveRegisterMainData_FilterSql (man beachte das fehlende Attributes)

Das SQL aus dem Event das du benutzt erwartet nur einen Parameter, daher die Fehlermeldung.

Genau so ist es, vielen Dank!