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
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)
-
Den neuesten Release als ZIP von der Releases-Seite herunterladen.
-
Im Admin-Panel hochladen:
- Navigiere zu Erweiterungen → Meine Erweiterungen
- Klicke oben rechts auf „Erweiterung hochladen"
- Wähle die
SsqWithdrawalForm.zipaus - 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
-
Repository klonen:
git clone git@github.com:hyperlinkgroup/shopware-withdrawal-form.git custom/plugins/SsqWithdrawalForm
-
Plugin erkennen, installieren und aktivieren:
bin/console plugin:refresh bin/console plugin:install --activate SsqWithdrawalForm bin/console cache:clear
-
Administration-Assets veröffentlichen (optional – das Plugin enthält bereits eine vorgebaute JS-Datei):
bin/console assets:install
Einrichten im Shop
- Erlebnisseite anlegen – neue CMS-Seite (z. B. „Widerruf") erstellen, einen Formular-Block einfügen und als Element-Typ „Widerrufsformular" auswählen.
- Seite erreichbar machen – die Seite einer Kategorie zuweisen, damit sie ohne Login aufrufbar ist.
- Footer verlinken – im Theme-Footer einen Link mit dem Text „Vertrag widerrufen" auf die Widerrufsseite setzen.
- 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', …)undShopware.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
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-23