UserComponent erweitern schlägt fehl

Hallo,

ich möchte bei der Registrierung im Shop gern etwas erweitern. Dazu möchte ich quasi in den Registriervorgang eingreifen.

Dies habe ich über \OxidEsales\Eshop\Application\Component\UserComponent festgestellt, da ich dort ein $oUser zurück bekomme und die eingegeben Daten verwenden kann. Doch wenn ich das in mein Modul extende, und etwas ändern möchte, dann greifen meine Änderungen nicht.

metadata.php

$sMetadataVersion = '2.1';
$aModule = array(
    'id'           => 'ext_name',
    'version'      => '1.0.0',
    'email'        => 'xxx',
    'extend'       => [
        \OxidEsales\Eshop\Application\Component\UserComponent::class => \Ext\ExtName\Controller\UserComponent::class
    ]
);

UserComponent.php

<?php

namespace Ext\ExtName\Controller;

use OxidEsales\Eshop\Application\Model\User\UserShippingAddressUpdatableFields;
use OxidEsales\Eshop\Application\Model\User\UserUpdatableFields;
use OxidEsales\Eshop\Core\Field;
use OxidEsales\Eshop\Core\Registry;

class UserComponent extends \OxidEsales\Eshop\Application\Component\UserComponent
{
    /**
     * First test if all required fields were filled, then performed
     * additional checking oxcmp_user::CheckValues(). If no errors
     * occured - trying to create new user (\OxidEsales\Eshop\Application\Model\User::CreateUser()),
     * logging him to shop (\OxidEsales\Eshop\Application\Model\User::Login() if user has entered password).
     * If \OxidEsales\Eshop\Application\Model\User::CreateUser() returns false - this means user is
     * already created - we only logging him to shop (oxcmp_user::Login()).
     * If there is any error with missing data - function will return
     * false and set error code (oxcmp_user::iError). If user was
     * created successfully - will return "payment" to redirect to
     * payment interface.
     *
     * Template variables:
     * <b>usr_err</b>
     *
     * Session variables:
     * <b>usr_err</b>, <b>usr</b>
     *
     * @return  mixed    redirection string or true if successful, false otherwise
     */
    public function createUser()
    {
       die("123");
    }
}

Ich müsste mit der Registrierung nun eine weiße Seite mit 123 angezeigt bekommen. Wenn ich das direkt im vendor-Ordner vornehme, passiert das auch. Aber nicht in meiner Extension.

composer wurde für mögliches fehlendes autoload durchgeführt.

Ich habe keine Ideen mehr. Was mache ich falsch?

Edit: Shopversion 6.4.2

class UserComponent extends UserComponent_parent
{

Leider ohne Erfolg.

Ich habe die Lösung.

Falls jemand noch solche Probleme hat, einfach das Modul deaktivieren und danach aktivieren.

Nach Beseitigung des benannten Fehlers? Dann ist der Neustart eines Moduls wohl kaum die Lösung.

Bei Änderungen am Modul sollte grundsätzlich oe:module:install-configuration genutzt werden.

1 Like

Schau dir am besten mal die Schulungsmaterialien an:

Ansonsten gibts noch Entwicklerschulungen von OXID: