Dynamisches Svelte-Formular
Baue ein dynamisches, schema-basiertes Formular in Svelte ganz ohne Backend. Rendere die Eingabefelder aus einem Fields-Array mit {#each}, sodass du Felder durch Bearbeiten der Daten hinzufügst oder umordnest. Es sendet einmal an Formpaste. Kopiere die Komponente und ergänze deinen Zugangsschlüssel.
So baust du es
- Erstelle ein Formular in deinem Formpaste-Dashboard und kopiere den Zugangsschlüssel.
- Kopiere die schema-basierte Komponente unten und passe das Fields-Array an dein Formular an.
- Ersetze YOUR_ACCESS_KEY_HERE durch deinen Zugangsschlüssel, dann deploye.
Prompt für deinen KI-Coding-Agenten
Add a Formpaste dynamic form to my Svelte app. Use a single-file component that renders inputs from a fields array with {#each}, binds each with bind:value into a data object, and POSTs once as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key. The fields should come from a schema, not hardcoded markup.Oder verbinde den Formpaste-MCP-Server mit Claude Code, Codex, Cursor, Claude Desktop, VS Code oder einem beliebigen mcp-remote-Client. Zur Einrichtungsanleitung.
Svelte-Fallstricke
Ein Svelte-Kontaktformular ist eine Single-File-Komponente mit bind:value auf den Feldern und einem on:submit|preventDefault-Handler, der an Formpaste postet. Du brauchst kein eigenes Backend und keine eigene API. Setze den fetch in die Komponente, und du bist fertig.
Es ist eine Single-File-Komponente
Das Formular lebt in einer .svelte-Komponente mit einem <script>-Block. Binde die Felder mit bind:value oder lies beim Absenden ein FormData vom Formular-Element aus, und poste dann an den Formpaste-Endpunkt. Für ein einfaches Formular brauchst du weder einen Store noch eine Library.
Keine eigene API
Du proxyst nichts über deinen eigenen Server. Die Komponente postet direkt an den Formpaste-Endpunkt, wodurch du dir einen Mailer und einen Speicher für Einsendungen sparst, den du sonst selbst bauen müsstest.
Antwort mit einer reaktiven status-Variable verarbeiten
Der Endpunkt liefert JSON zurück (success, message, id). Warte den fetch ab und setze eine reaktive status-Variable, um deinen eigenen Erfolgs- oder Fehlerzustand anzuzeigen, oder hinterlege eine Redirect-URL im Dashboard und überspringe die clientseitige Verarbeitung.
Svelte 4 oder Svelte 5, beides funktioniert
Die Beispiele verwenden einen <script>-Block mit einer einfachen status-Variable, was in jeder Svelte-Version funktioniert. Ab Svelte 5 kannst du stattdessen Runes wie $state nutzen, aber Formpaste braucht in jedem Fall nur denselben fetch und dasselbe POST.
Worauf es ankommt
Die Felder kommen aus einem Schema, nicht aus dem Markup
Ein dynamisches Formular rendert seine Eingabefelder aus einem Array von Felddefinitionen, sodass du Felder durch das Bearbeiten von Daten hinzufügst oder umordnest, nicht von JSX oder Template-Markup. Dieselbe Komponente verarbeitet jede beliebige Feldmenge.
Eine Einsendung für jede Form
Egal wie viele Felder das Schema hat, das Formular sendet einmalig an Formpaste als einzelne Einsendung. Behalte das versteckte access_key-Feld im Payload und halte die Feldnamen aussagekräftig, damit dein Posteingang lesbar bleibt.
Feldnamen stabil halten
Der Feldname ist das, was in deinem Posteingang und in Exporten erscheint, also benenne jeden Schema-Eintrag klar (name, email, message), auch wenn du Labels oder Reihenfolge änderst. Formpaste speichert die Namen, die du sendest, genau so.
So funktioniert es
Drei einfache Schritte, bis Formular-Einsendungen in deinem E-Mail-Posteingang landen.
Erstelle dein Formular, setze die action-URL auf den Formpaste-Endpunkt und trage deinen Zugangsschlüssel ein.
Formular erstellen
Melde dich an, verifiziere deine E-Mail und erstelle einen Zugangsschlüssel im Dashboard.
Code kopieren
Füge das Snippet oben in dein Projekt ein. Wähle CSS oder Tailwind passend zu deiner Website.
<script lang="ts">
const ENDPOINT = "https://api.formpaste.com/submit";
const fields = [
{ name: "name", type: "text", label: "Name" },
{ name: "email", type: "email", label: "Email" },
{ name: "message", type: "textarea", label: "Message" },
];
let data: Record<string, string> = Object.fromEntries(
fields.map((f) => [f.name, ""])
);
async function submit() {
const body = new URLSearchParams({ access_key: "YOUR_ACCESS_KEY_HERE", ...data });
await fetch(ENDPOINT, { method: "POST", body });
}
</script>
<form on:submit|preventDefault={submit}>
{#each fields as f}
<label>
{f.label}
{#if f.type === "textarea"}
<textarea bind:value={data[f.name]} />
{:else}
<input type={f.type} bind:value={data[f.name]} />
{/if}
</label>
{/each}
<button type="submit">Send</button>
</form>
Zugangsschlüssel hinzufügen
Ersetze den Platzhalter durch deinen Zugangsschlüssel, um Einsendungen zu empfangen.
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">Dynamisches Svelte-Formular FAQ
Formular einfügen. Einsendungen erhalten.
Sofort, ohne Backend, Server oder Datenbanken einzurichten. 250 Einsendungen/Monat kostenlos - keine Kreditkarte.