Gastbestellung umleiten

Hallo,

ich möchte den Link zur Gastbestellung in eine eigene Funktion umleiten.

die hiddenfields zum Button sehen so aus:

<input type="hidden" name="cl" value="guestOrder">
<input type="hidden" name="fnc" value="createGuestUser">

die Klasse binde ich so ein:
‘extend’ => array(
‘oxuser’ => ‘guestOrder/controller/guestOrder’,
… und …
class guestOrder extends guestOrder_parent {

Die Klasse wird nicht gefunden.

Ist das der komplett falsche Weg?

Gruß
Thoni

Mit extend bleibt der Controller gleich.

Korrekt müsste es lauten

<input type="hidden" name="cl" value="user">

Dann sollte Dein OXID auch die neue Methode createGuestUser von Dir finden.

Leider nicht:

OXID Logger.ERROR: ERROR_MESSAGE_SYSTEMCOMPONENT_FUNCTIONNOTFOUND createGuestUser

Welche Version hast den im Einsatz?

OXID-Version 6.2.0

Ich habe auch schon probiert, oxuser aussen vor zu lassen:

'files'        => array('guestOrder' => 'guestOrder/controller/guestOrder.php',

… und …

use OxidEsales\Eshop\Application\Controller\FrontendController;
class guestOrder extends FrontendController {

Dann bekomme ich ein :
OXID Logger.ERROR: ERROR_MESSAGE_SYSTEMCOMPONENT_CLASSNOTFOUND

Was möchte ich machen?
Die Registrierung funktioniert über mehrere Steps, statt auf einer Seite.
Dies soll nun auch mit der Gastbestellung so sein.

Ich habe nochmal neu angefangen.

metatdata V2:

‘controllers’ => array(
‘tk_myguestregister_mygr’ => tk\myguestregister\application\controllers\mygr::class
),

source/modules/tk/myguestregister/application/controllers/mygr.php:

class mygr extends \OxidEsales\Eshop\Application\Controller\FrontendController
{
public function render()
{
parent::render();
return “guestframe.tpl”;
}
}

per SSH:

php vendor/bin/oe-console oe:module:install-configuration source/modules/tk/myguestregister

Fehler:

EXCEPTION_SYSTEMCOMPONENT_CLASSNOTFOUND tk\myguestregister\application\controllers\mygr

Warum findet er die Klasse nicht?

Du warst im Prinzip schon auf der richtigen Fährte.

Die Fehlermeldung

Gibt schon einen Hinweis, er sucht als Controller in Deinem Fall eine Komponente.

Das OXID Framework ist so aufgebaut, dass es unter

Application/ die Unterverzeichnisse
Controller/ und Component/ gibt.

Bei

<input type="hidden" name="cl" value="user">

könnte es sich daher anscheinend in Deinem Anwendungsfall um die Komponente

/Application/Component/UserComponent.php handeln welche über Dein Modul erweitern musst um Deine Methode createGuestUser darüber bekannt zu machen.

Hinweis: Eine Komponente ist ein Controller der auf unterschiedliche Seitentypen also seitenübergreifend verwendet wird.

1 Like

Danke.

Ich werde mich mal mehr mit dem Composer beschäftigen.

Mit Conposer hat dies nichts zu tun.

Dein Punkt oben könnte etwas mit Composer zu tun, indem den Autoload in composer.json Datei vergessen Composer.json for an OXID eShop Module — OXID eShop developer documentation 6.2.0 documentation