Checkout extra checkbox validierung

Guten Tag,

ich würde gerne eine extra checkbox auf der checkout seite einbinden und dieses auch rot markieren falls kein häkchen gesetzt wurde.

Nun habe ich folgendes problem, wenn ich den submit button drücke wird keiner der hooks aus meinem plugin erneut ausgeführt.

 

Ich habe mir den code im checkout controller angeguckt und wollte eigentlich genau so verfahren wie es mit sAGBError bzw sAGB gemacht wird.

Ich habe ein neues plugin erstellt und extende das template “frontend/checkout/confirm.tpl” zusätzlich habe ich einen subscriber registriert

der auf folgende events hört

“Shopware_Controllers_Frontend_Checkout::confirmAction::before”

“Shopware_Controllers_Frontend_Checkout::finishAction::before”

“Shopware_Controllers_Frontend_Checkout::paymentAction::before”

alle 3 haben im checkout controller etwas mit der agb checkbox zutun. wenn sAGB nicht angehakt ist wird

ein forward auf “confirm” gemacht mal mit und mal ohne zusätzliche parameter anschließend wird aber keiner der hooks mehr betreten. Liegt das an dem forward? werden die hooks betreten aber die änderungen nicht gerendert? und wenn ja, warum wird das label von sAGB als rot gekennzeichnet und mein label was auch auf $sAGBError hört nicht? Gibt es da eine andere methode?

Bin leider relativ neu was shopware angeht.

 

Vielen dank im Voraus!

Hallo sinplex,
Plugin ist aktiviert und du hast wirklich alle Caches gelöscht?
Kannst du, den schon sagen das einer der Hooks zieht?
Also am besten einfach mal ein die(‘ich bin hier’); machen damit du auch sicher bist das der Hook zieht.
Kannst du auch mal den Code vom forward hier reinposten, sonst wird es schwierig hier etwas Genaues zu sagen :wink:

Danke schon mal für die antwort!

Also ich bin mir sicher das

 Shopware\_Controllers\_Frontend\_Checkout::confirmAction::before

zieht, zumindest beim ersten betreten der seite. Danach zieht keiner der hooks mehr. Was passiert denn eigentlich im hintergrund wenn der submit button gedrückt wird?

Wird die has–error klasse eventuell mit JS beim agb label hinzugefügt?

Hab jetzt mal xdebug benutzt um zu gucken welche actions überhaupt aufgerufen werden, es wird eigentlich nur die

 confirmAction 

betreten aber auch nur ein einziges mal beim ersten aufruf der seite und danach hält der debugger weder in

 confirmAction

noch in

 finishAction oder paymentAction

erneut, und auch in keinem der hooks. Ich gehe mal davon aus das es daran liegt das ich nicht genau verstehe was der click auf den submit button auslöst wenn das agb feld nicht angehakt ist.

Der Hook 

 Shopware\_Controllers\_Frontend\_Checkout::finishAction::before

wird auf jeden fall aufgerufen wenn du den Submit Button klickt, sofern alle Pflichtfelder ausgefüllt sind.

Hier nur ein beispiel wie es bei mir Funktioniert hat.

    public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
    {
        /** @var $controller \Enlight_Controller_Action */
        $controller = $args->getSubject();
        $view = $controller->View();
        $response = $controller->Response();

        $agb2 = false;

        if ($agb2 === false){
            $response->setRedirect('/checkout');
            $response->sendResponse();
            die();
        }

    }

 

@sinplex schrieb:

Wird die has–error klasse eventuell mit JS beim agb label hinzugefügt?

 Mit ziemlich hoher wahrscheinlichkeit.

Mein problem ist das ich gerne auch ein “has–error” an mein label setzen würde wenn die dazugehörige checkbox nicht angehakt ist. Muss ich dann im JS von shopware arbeiten? Oder kriegt man das mit php hin?

 

 Shopware\_Controllers\_Frontend\_Checkout::finishAction::before

wird bei mir nicht aufgerufen weil meine zusätzliche box ein pflichtfeld sein soll und somit die form blockiert.

Ok hab mal das JS durchgeguckt und habe ein jQuery plugin names “swInvalidTosJump” gefunden, dieses plugin setzt wohl die has–error klasse. Also werde ich wohl was in der richtung machen müssen. Hast du zufällig erfahrung mit den jQuery plugins?

hab es geschafft mit einem jQuery plugin danke für die Hilfe @mastox hast mich auf die richtige fährte gelockt!

1 „Gefällt mir“

Moin @sinplex‍

habe auch etwas ähnliches gebaut, leider ohne die rote Markierung wenn es nicht gesetzt wird… kannst du dein Werk auf GitHub Posten? Hätte Interesse!

Mit freundlichen Grüßen 

marc

ich versuchs nachher zu machen @kanuma‍

@kanuma‍

Hallo zusammen,

vielen Dank für den Link zum jQuery Plugin. Das hat mir schon recht gut weitergeholfen.

Ist sowas auch möglich auf die komplette AGB-Box anzuwenden? Also das die komplette AGB Box einen Rahmen bekommt (rot) und ggf. eine andere Hintergrundfarbe?

Vielen Dank für die Unterstützung und Hinweise.

 

MFG

Johannes