hyperlink/withdrawal-form 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hyperlink/withdrawal-form

Composer 安装命令:

composer require hyperlink/withdrawal-form

包简介

EU right-of-withdrawal form (§ 356a BGB) as a CMS form type for Shopware 6.

README 文档

README

Latest Version on Packagist Shopware 6.5 License: MIT

Ergänzt das Shopware-CMS-Formular-Element um den Typ „Widerrufsformular" – die gesetzlich geforderte elektronische Widerrufsfunktion gemäß § 356a BGB / EU-Richtlinie 2023/2673 (Pflicht ab 19.06.2026).

Funktionsumfang

  • CMS-Formulartyp „Widerrufsformular" neben den bestehenden Typen „Kontakt" und „Newsletter"
  • Felder: Vorname, Nachname, Bestellnummer, E-Mail-Adresse (Pflicht) sowie optionaler Grund
  • Eingangsmail ans Service-Postfach mit erkennbarem „Widerruf"-Betreff und Eingangszeitpunkt
  • Automatische Eingangsbestätigung per E-Mail an den Kunden
  • Hybrider Mailversand: deterministisch (Plugin sendet direkt) oder über den Flow Builder
  • Admin-Vorschau des Formulars im CMS-Editor
  • Lokalisierte Feldtexte und Mails (Deutsch & Englisch)

Voraussetzungen

  • Shopware 6.5.x
  • PHP 8.1+

Installation

Variante 1: ZIP-Upload im Admin-Panel (empfohlen)

  1. Den neuesten Release als ZIP von der Releases-Seite herunterladen.

  2. Im Admin-Panel hochladen:

    • Navigiere zu Erweiterungen → Meine Erweiterungen
    • Klicke oben rechts auf „Erweiterung hochladen"
    • Wähle die SsqWithdrawalForm.zip aus
    • Klicke auf „Installieren" und anschließend auf „Aktivieren"

    Die Migrationen (E-Mail-Templates) laufen automatisch bei der Installation.

Variante 2: Manuell in den Plugin-Ordner kopieren

  1. Repository klonen:

    git clone git@github.com:hyperlinkgroup/shopware-withdrawal-form.git custom/plugins/SsqWithdrawalForm
  2. Plugin erkennen, installieren und aktivieren:

    bin/console plugin:refresh
    bin/console plugin:install --activate SsqWithdrawalForm
    bin/console cache:clear
  3. Administration-Assets veröffentlichen (optional – das Plugin enthält bereits eine vorgebaute JS-Datei):

    bin/console assets:install

Einrichten im Shop

  1. Erlebnisseite anlegen – neue CMS-Seite (z. B. „Widerruf") erstellen, einen Formular-Block einfügen und als Element-Typ „Widerrufsformular" auswählen.
  2. Seite erreichbar machen – die Seite einer Kategorie zuweisen, damit sie ohne Login aufrufbar ist.
  3. Footer verlinken – im Theme-Footer einen Link mit dem Text „Vertrag widerrufen" auf die Widerrufsseite setzen.
  4. Service-Postfach konfigurieren – unter Erweiterungen → Meine Erweiterungen → SsqWithdrawalForm → Konfiguration die Empfänger-E-Mail-Adresse eintragen (leer = Standard-Shop-E-Mail).

Konfiguration im Admin-Panel

Navigiere zu Erweiterungen → Meine Erweiterungen → SsqWithdrawalForm → Konfiguration.

Feld Beschreibung
Mails direkt versenden Wenn aktiviert (Standard), sendet das Plugin beide Mails selbst. Wenn deaktiviert, werden nur Events gefeuert – Mails dann über den Flow Builder konfigurieren.
Empfänger-E-Mail Adresse, an die Widerrufsanfragen zugestellt werden. Leer lassen, um die Standard-Shop-E-Mail zu verwenden.

Mailversand

Das Plugin unterstützt zwei Modi:

Direktversand (Standard, empfohlen): Das Plugin verschickt nach einer Formular-Abgabe eigenständig zwei Mails:

  • Eine Eingangsmail an das Service-Postfach (Betreff enthält „Widerruf" + Bestellnummer)
  • Eine Eingangsbestätigung an die E-Mail-Adresse des Kunden

Flow-Modus: Das Plugin feuert die Events ssq.withdrawal_form.received und ssq.withdrawal_form.confirmation. Mails werden über den Flow Builder unter Einstellungen → Flow Builder konfiguriert.

⚠️ Nicht beides gleichzeitig aktiv lassen – sonst werden Mails doppelt verschickt.

E-Mail-Templates

Die Mailtexte sind unter Einstellungen → E-Mail-Templates pflegbar:

Technischer Name Verwendung
ssq_withdrawal_form_received Eingangsmail ans Service-Postfach
ssq_withdrawal_form_confirmation Eingangsbestätigung an den Kunden

Verfügbare Template-Variablen:

Variable Inhalt
{{ withdrawalFormData.firstName }} Vorname
{{ withdrawalFormData.lastName }} Nachname
{{ withdrawalFormData.orderNumber }} Bestellnummer
{{ withdrawalFormData.email }} E-Mail-Adresse
{{ withdrawalFormData.reason }} Grund (kann leer sein)
{{ withdrawalFormData.requestedAt }} Eingangszeitpunkt (DateTimeImmutable)
{{ salesChannel.name }} Name des Sales Channels

Deinstallation

bin/console plugin:deactivate SsqWithdrawalForm
bin/console plugin:uninstall SsqWithdrawalForm
bin/console cache:clear

Bei der Deinstallation bleiben die E-Mail-Templates in der Datenbank erhalten, sofern nicht „Benutzerdaten löschen" gewählt wird.

Technische Details

  • Storefront-Route: POST /form/withdrawal (frontend.form.withdrawal.send), XmlHttpRequest + Captcha
  • Validierung über DataValidationFactoryInterface; URL-Injection in Freitextfeldern wird per Regex blockiert
  • Der Eingangszeitpunkt wird in der konfigurierten Shop-Zeitzone (core.basicInformation.timeZone) ermittelt
  • Admin-Dropdown über Shopware.Component.override('sw-cms-el-config-form', …) und Shopware.Component.override('sw-cms-el-form', …)
  • Das Plugin enthält ein vorgebautes Admin-Bundle (src/Resources/public/administration/js/ssq-withdrawal-form.js), sodass kein Server-seitiger Build nötig ist

Lizenz

Dieses Projekt ist lizenziert unter der MIT-Lizenz.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固