sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018 edited October 2018

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!

Answers

  • mastoxmastox MemberComments: 21 Received thanks: 6 Member since: October 2018

    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 ;)

  • sinplexsinplex MemberComments: 6 Received thanks: 1 edited October 2018 Member since: October 2018

    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.

  • mastoxmastox MemberComments: 21 Received thanks: 6 Member since: October 2018

    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();
            }
    
        }

     

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

     Mit ziemlich hoher wahrscheinlichkeit.

  • sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018

    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.

  • sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018

    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?

  • sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018

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

    Thanked by 1kanuma
  • kanumakanuma MemberComments: 226 Received thanks: 50 Member since: May 2014

    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

  • sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018

    ich versuchs nachher zu machen @kanuma

  • sinplexsinplex MemberComments: 6 Received thanks: 1 Member since: October 2018
  • FichtelshirtsFichtelshirts MemberComments: 1 Received thanks: 0 Member since: May 14

    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

     

Sign In or Register to comment.