Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Server components for Astro (server + client validation)

License

NotificationsYou must be signed in to change notification settings

withastro-utils/utils

Repository files navigation

Server component for Astro (validation and state management)

Full feature server components for Astro.js

This package is a framework for Astro.js that allows you to create forms and manage their state without any JavaScript.

It also allows you to validate the form on the client side and server side, and protect against CSRF attacks.

More features

  • JWT session management
  • Override response at runtime (useful for error handling)
  • Custom server validation withzod
  • Multiples app states at the same time

Show me the code

---import {Bind,BindForm,BButton,BInput }from"@astro-utils/forms/forms.js";importLayoutfrom"../layouts/Layout.astro";const form=Bind();let showSubmitText:string;function formSubmit(){showSubmitText=`You name is ${form.name}, you are ${form.age} years old.`;}---<Layout>    <BindFormbind={form}>{showSubmitText}                <h4>What you name*</h4>        <BInputtype="text"name="name"maxlength={20}required/>            <h4>Enter age*</h4>        <BInputtype="int"name="age"required/>            <BButtononClick={formSubmit}whenFormOK>Submit</BButton>    </BindForm></Layout>

Usage

Add the middleware to your server

npm install @astro-utils/forms

Add the middleware to your server

src/middleware.ts

importastroFormsfrom"@astro-utils/forms";import{sequence}from"astro/middleware";exportconstonRequest=sequence(astroForms());

Add to Layout

Add theWebForms component in the layout

layouts/Layout.astro

---import {WebForms}from'@astro-utils/forms/forms.js';---<WebForms>    <slot/></WebForms>

Code Integration

This changes astro behavior to allow the form to work, it ensure the components render by the order they are in the file.

astro.config.mjs

import{defineConfig}from'astro/config';importastroFormsfrom"@astro-utils/forms/dist/integration.js";exportdefaultdefineConfig({output:'server',integrations:[astroForms]});

Sponsor this project

 

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp