Anpassung "FontControll.php"

Hallo zusammen,

 

ich versuche momentan das File FormControll.php anzupassen. Mein Ziel:

  • Dass die Nutzer nur mit der E-Mail sich für Newsletters im footer anmelden können.

Das Problem:

  • Nach der Eingabe der E-Mail, wird ein „successful“ Message angezeigt, welche das layout im footer kaput macht.

Meine Idee:

  • If $data = footer --> show „Danke für die Registrierung“ als alert text beim footer. (Nur, wenn der Nutzer durch das Footer sich registriert)

  • else --> show default Message „2 Alerts.“ (Wenn der Nutzer durchs Newsletter Form sich registriert)

  • Nach der Sendung von der E-Mail durch POST, „name = ‚option‘ & value = ‚footer‘“ senden (zulässige default value wäre ‚subscribe‘).

  • Bei der Methode „handleNewsletter“ das value „footer“ nehmen, auf „subscribe“ ändern und ein „true“ für die Methode „handleSubscribe“ weiter geben.

    public function handleNewsletter(Request $request, RequestDataBag $data, SalesChannelContext $context): JsonResponse
    {
    /* value = „footer“ */
    if ($data == „footer“) {
    // von value=‚footer‘ auf value=‚subscribe‘, da nur „subscribe“ genommen wird
    $data->set(‚option‘, ‚subscribe‘);
    $subscribe = $data->get(‚option‘) === self::SUBSCRIBE;

              // handleSubscribe: als parameter footer "true" weiter geben
              if ($subscribe) {
                  $response = $this->handleSubscribe($request, $data, $context, true);
              } else {
                  $response = $this->handleUnsubscribe($data, $context);
              }
          } else {
              $data->set('option', 'subscribe');
              $subscribe = $data->get('option') === self::SUBSCRIBE;
    
              // else, footer false.
              if ($subscribe) {
                  $response = $this->handleSubscribe($request, $data, $context, false);
              } else {
                  $response = $this->handleUnsubscribe($data, $context);
              }
          }
    
          return new JsonResponse($response);
      }
    

Mein „handleSubscribe“ Methode:

private function handleSubscribe(Request $request, RequestDataBag $data, SalesChannelContext $context, bool $footer): array
    {
        try {
            $data->set('storefrontUrl', $request->attributes->get('sw-sales-channel-absolute-base-url'));

            $this->subscribeRoute->subscribe($data, $context, false);
            if ($footer == false) {
                // da footer = false, show default message. text & info-alert
                $response[] = [
                    'type' => 'success',
                    'alert' => $this->trans('newsletter.subscriptionPersistedSuccess'),
                ];
                $response[] = [
                    'type' => 'info',
                    'alert' => $this->renderView('@Storefront/storefront/utilities/alert.html.twig', [
                        'type' => 'info',
                        'list' => [$this->trans('newsletter.subscriptionPersistedInfo')],
                    ]),
                ];
            } else {
                // show text without info-alert. Meaning Nutzer hat sich beim footer angemeldet.
                $response[] = [
                    'type' => 'success',
                    'alert' => $this->trans('newsletter.subscriptionPersistedSuccess'),
                ];
            }

        } catch ...(rest des Codes)

 

Lösung: Keine Lösung, da die Änderungen beim FormController.php werden nicht geladen. Hat jemand eine Idee warum? Kann man die .php Dateien ändern? Ich habe die Core-Datei „FormController.php“ auf mein Costume Theme-Struktur auf den Pfad " custom/plugins/MEINSHOP/src/Controller/FormController.php " kopiert.

Hat jemand Erfahrung damit? Ich wurde mich sehr freuen ein bisschen Hilfe zu bekommen ><