Maison interface Web js tutoriel Appeler une action de formulaire SvelteKit (ou soumettre un formulaire) à partir d'un composant

Appeler une action de formulaire SvelteKit (ou soumettre un formulaire) à partir d'un composant

Sep 05, 2024 pm 10:32 PM

Calling a SvelteKit form action (or submitting a form) from a component

Gestion des soumissions de formulaires à partir d'un composant SvelteKit

Soumettre un formulaire à partir d'un composant SvelteKit pour qu'il soit géré par une action de formulaire côté serveur est plus simple que vous ne le pensez. Vous n’avez pas besoin que le formulaire se trouve dans une page. Il peut vivre dans n’importe quel composant tout en continuant à interagir avec les fonctionnalités côté serveur de SvelteKit.

Cet article vous guidera dans la soumission d'un formulaire à partir d'un composant, son traitement à l'aide d'une action de formulaire par défaut à partir d'un +page.server.js et la configuration d'un +page.svelte pour lier le formulaire.

Structure du projet
mon-projet-sveltekit/
├──src/
│ ├── composants/
│ │ └── FormTestComponent.svelte
│ ├── itinéraires/
│ │ ├── +page.svelte
│ │ └── test/
│ │ └── +page.server.js
├── statique/
├── package.json
├── svelte.config.js
├── vite.config.js
└── tsconfig.json


1. Créez le FormTestComponent et ajoutez un formulaire

Tout d’abord, créons un FormTestComponent qui contient un formulaire simple :

<!-- src/lib/components/FormTestComponent.svelte -->
<script>
  export let form;
</script>

<form>
  <input id="test" name="test" />
  <button type="submit"> Submit </button>
</form>
  • Le composant FormInput est un champ de saisie personnalisé utilisé ici pour le formulaire.
  • {form} est un raccourci pour form={form}, qui lie l'objet formulaire transmis de la page à ce composant.

À ce stade, nous disposons d'un formulaire de base prêt à être utilisé dans un composant, mais nous ne l'avons pas encore connecté à la gestion des formulaires côté serveur.


2. Configurez +page.svelte pour la liaison de formulaire

Maintenant, créez un fichier +page.svelte pour utiliser le FormTestComponent et liez son accessoire de formulaire.

<!-- routes/+page.svelte -->
<script>
  import FormTestComponent from "$lib/components/FormTestComponent.svelte";
  export let form; // This comes from the page’s server-side form response
</script>

<FormTestComponent {form} />

Points clés :

  • export let form; : L'objet formulaire provient de la réponse à l'action du formulaire sur le serveur et est transmis à FormTestComponent. Cela lie les données de réponse du formulaire à l'accessoire de formulaire dans le composant.
  • Réactivité : au fur et à mesure que le formulaire est soumis et mis à jour sur le serveur, l'objet du formulaire reflétera ces modifications côté client, gardant tout synchronisé.

3. Amélioration de la soumission du formulaire dans FormTestComponent

Pour gérer efficacement les soumissions de formulaires, SvelteKit fournit la directive use:enhance, qui vous permet d'améliorer le formulaire avec des fonctionnalités d'amélioration progressive telles que la gestion des soumissions sans rechargement complet de la page.

Voici comment améliorer la soumission du formulaire dans FormTestComponent :

<!-- src/lib/components/FormTestComponent.svelte -->
<script>
  import { enhance } from "$app/forms";
  import FormInput from "$components/forms/FormInput.svelte";
  import { page } from "$app/stores";

  let loading = false;
  export let form;
  $: console.log(form); // Log form response for debugging
</script>

<form
  method="POST"
  on:submit|preventDefault
  action="/test"
  use:enhance
>
  <FormInput label="test" id="test" />
  <button type="submit"> Submit </button>
</form>

Points clés :

  • use:enhance : Cette directive améliore le formulaire pour gérer les soumissions sans rechargement complet. Cela facilite également la gestion des erreurs ou des mises à jour partielles du formulaire côté client.
  • on:submit|preventDefault : cela empêche le comportement de soumission de formulaire par défaut du navigateur (un rechargement de page), permettant à SvelteKit de le gérer.
  • action="/test" : Le formulaire pointe vers la route /test, que nous allons créer prochainement. Si nous utilisions une action nommée (comme l'inscription), l'URL ressemblerait à /test?/signup.

4. Création de l'action côté serveur

Pour traiter le formulaire sur le serveur, créez un répertoire dans /test avec un +page.server.js (ou +page.server.ts si vous préférez TypeScript).

Voici un exemple de ce à quoi pourrait ressembler l'action du formulaire dans +page.server.js :

// - /routes/test/+page.server.js
/** @type {import('./$types').Actions} */
export const actions = {
    default: async ({ request }) => {
        const data = await request.formData();
        const formEntries = Object.fromEntries(data.entries()); // Convert form data to an object
        console.log(formEntries); // Log form data on the server
        return {
            success: true,
            message: "Yay!!"
        };
    }
};

Points clés :

  • request.formData() : Cette méthode récupère les données du formulaire soumises à partir de la requête.
  • Object.fromEntries(data.entries()) : Ceci convertit les données du formulaire en un format d'objet plus utilisable, où chaque nom de champ de formulaire devient une clé et sa valeur est la valeur correspondante.

C'est ici que le serveur traite le formulaire. Dans ce cas, nous enregistrons les données du formulaire et renvoyons un message de réussite. Dans un scénario réel, vous effectueriez probablement une validation et géreriez les erreurs.


5. Voir la réponse du formulaire

Une fois le formulaire soumis, vous verrez les données du formulaire enregistrées à la fois dans le terminal (côté serveur) et dans la console du navigateur (côté client). C'est grâce au console.log(form) dans le composant et au console.log(formEntries) dans le +page.server.js, qui enregistre respectivement la réponse du formulaire et le formulaire.


Conclusion

Vous avez maintenant créé avec succès un formulaire dans un composant SvelteKit qui soumet des données à une action de formulaire côté serveur. Vous n'avez pas besoin d'utiliser une page complète pour le formulaire et vous avez utilisé l'utilisation de SvelteKit : améliorer pour gérer les soumissions de manière transparente sans recharger la page.

Vous pouvez étendre cela en ajoutant une validation personnalisée, en gérant les erreurs ou même en effectuant des actions plus complexes comme le téléchargement de fichiers.


Bon piratage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel Sep 18, 2025 pm 01:03 PM

Cet article présentera comment utiliser JavaScript pour réaliser l'effet de cliquer sur les images. L'idée principale est d'utiliser l'attribut Data- * de HTML5 pour stocker le chemin d'image alternatif et écouter des événements de clic via JavaScript, changez dynamiquement les attributs SRC, réalisant ainsi la commutation d'image. Cet article fournira des exemples de code et des explications détaillés pour vous aider à comprendre et à maîtriser cet effet interactif couramment utilisé.

Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Sep 21, 2025 am 06:19 AM

Tout d'abord, vérifiez si le navigateur prend en charge GeolocationAPI. Si vous êtes pris en charge, appelez getCurrentPosition () pour obtenir les coordonnées de l'emplacement actuelles de l'utilisateur et obtenir les valeurs de latitude et de longitude grâce à des rappels réussis. Dans le même temps, fournissez des exceptions de traitement des rappels d'erreur tels que l'autorisation de déni, l'indisponibilité de l'emplacement ou du délai d'attente. Vous pouvez également transmettre des options de configuration pour activer une précision élevée, définir le délai d'expiration et la période de validité du cache. L'ensemble du processus nécessite l'autorisation de l'utilisateur et la gestion des erreurs correspondante.

Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Sep 15, 2025 pm 01:24 PM

Cet article vise à résoudre le problème du retour null lors de l'obtention d'éléments DOM via document.getElementById () dans JavaScript. Le noyau consiste à comprendre le synchronisation d'exécution du script et l'état de l'analyse DOM. En plaçant correctement la balise ou en utilisant l'événement téléchargé DomContent, vous pouvez vous assurer que l'élément est à nouveau tenté lorsqu'il est disponible, en évitant efficacement de telles erreurs.

L'API de composition Nuxt 3 a expliqué L'API de composition Nuxt 3 a expliqué Sep 20, 2025 am 03:00 AM

L'utilisation du noyau de l'API de composition de Nuxt3 comprend: 1. DefinePageMeta est utilisée pour définir les méta-informations de la page, telles que le titre, la mise en page et le middleware, qui doivent être appelées directement et ne peuvent pas être placées dans des déclarations conditionnelles; 2. Usyhead est utilisé pour gérer les balises d'en-tête de page, prend en charge les mises à jour statiques et réactives et doit coopérer avec DefinePageMeta pour obtenir l'optimisation du référencement; 3. USEASYNCDATA est utilisé pour obtenir en toute sécurité des données asynchrones, gérer automatiquement l'état de chargement et d'erreur et prend en charge le contrôle d'acquisition de données du serveur et du client; 4. UseFetch est une encapsulation de usEasyncdata et $ fetch, qui dépente automatiquement la clé de demande pour éviter les demandes en double

Comment créer un intervalle répétitif avec SetInterval dans JavaScript Comment créer un intervalle répétitif avec SetInterval dans JavaScript Sep 21, 2025 am 05:31 AM

Pour créer un intervalle de répétition dans JavaScript, vous devez utiliser la fonction setInterval (), qui exécutera à plusieurs reprises des fonctions ou des blocs de code à des intervalles de millisecondes spécifiés. Par exemple, setInterval (() => {Console.log ("Exécuter toutes les 2 secondes");}, 2000) publiera un message toutes les 2 secondes jusqu'à ce qu'il soit effacé par ClearInterval (Interpalid). Il peut être utilisé dans les applications réelles pour mettre à jour les horloges, les serveurs de sondage, etc., mais faire attention à la limite de retard minimum et à l'impact du temps d'exécution de la fonction, et effacez l'intervalle dans le temps lorsqu'il n'est plus nécessaire pour éviter les fuites de mémoire. Surtout avant la désinstallation des composants ou la fermeture des pages, assurez-vous que

Comment créer une chaîne multi-lignes en JavaScript? Comment créer une chaîne multi-lignes en JavaScript? Sep 20, 2025 am 06:11 AM

ThebestatorreatEAmulti-linestringinjavascriptsisingstingTemplatalalswithbackticks, qui sepresereBreakenexactlyAswritten.

Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Sep 16, 2025 am 11:57 AM

Ce tutoriel explique en détail comment formater les numéros en chaînes avec deux décimales fixes en JavaScript, même les entiers peuvent être affichés sous la forme de "# .00". Nous nous concentrerons sur l'utilisation de la méthode numéro.prototype.tofixed (), y compris sa syntaxe, sa fonctionnalité, son exemple de code et des points clés à noter, comme son type de retour étant toujours une chaîne.

Comment copier du texte dans le presse-papiers en javascript? Comment copier du texte dans le presse-papiers en javascript? Sep 18, 2025 am 03:50 AM

Utilisez la méthode WriteText de ClipboardAPI pour copier du texte dans le presse-papiers, il doit être appelé dans le contexte de sécurité et l'interaction utilisateur, prend en charge les navigateurs modernes et l'ancienne version peut être dégradée avec EXECCOMAND.

See all articles