Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

i18n(fr): update api-reference.mdx #9431

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 48 additions & 5 deletions src/content/docs/fr/reference/api-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2513,31 +2513,74 @@ export const server = {
#### Propriété `handler()`

<p>
<Since v="4.15.0" />

**Type :** `(input, context) => any`
</p>

`defineAction()` accepte une fonction `handler()` contenant la logique du serveur à exécuter lorsque l'action est appelée. Cette fonction peut renvoyer des données qui sont automatiquement sérialisées et envoyées à l'appelant.
`defineAction()` nécessite une fonction `handler()` contenant la logique du serveur à exécuter lorsque l'action est appelée. Les données renvoyées par le gestionnaire sont automatiquement sérialisées et envoyées à l'appelant.

Le `handler()` est appelé avec la saisie de l'utilisateur comme premier argument. Si un validateur [`input`](#validateur-de-saisie-input) est défini, la saisie de l'utilisateur sera validée avant d'être transmise au gestionnaire. Le deuxième argument est un objet `context` contenant la plupart du [contexte de point de terminaison standard](#contexte-du-point-de-terminaison) d'Astro, à l'exclusion de `getActionResult()`, `callAction()` et `redirect()`.

Les valeurs de retour sont analysées à l'aide de la [bibliothèque devalue](https://github.com/Rich-Harris/devalue). Celle-ci prend en charge les valeurs JSON, ainsi que les instances de `Date()`, `Map()`, `Set()` ou `URL()`.

#### Validateur de saisie (`input`)

<p>
<Since v="4.15.0" />

**Type :** `ZodType | undefined`
</p>

La propriété facultative `input` accepte un validateur Zod pour vérifier les entrées du gestionnaire lors de l'exécution. Si l'action échoue à la validation, [une erreur `BAD_REQUEST`](#actionerror) est renvoyée et la fonction `handler` n'est pas appelée.

S'il est utilisé avec `accept: 'form'`, `input` doit utiliser le validateur `z.object()`.
Si `input` est omis, le `handler` recevra une entrée de type `unknown` pour les requêtes JSON et de type `FormData` pour les requêtes de formulaire.

Les fonctions d'extension, notamment `.refine()`, `.transform()` et `.pipe()`, sont également prises en charge sur cet objet. Les validateurs suivants sont pris en charge pour les champs de données de formulaire :
##### Utiliser avec `accept: 'form'`

Si votre action accepte les entrées de formulaire, utilisez le validateur `z.object()` pour analyser automatiquement les données du formulaire en un objet typé. Les validateurs suivants sont pris en charge pour les champs de données de formulaire :

- Les entrées de type `number` peuvent être validées à l'aide de `z.number()`
- Les entrées de type `checkbox` peuvent être validées à l'aide de `z.boolean()`
- Les entrées de type `file` peuvent être validées à l'aide de `z.instanceof(File)`
- Plusieurs entrées du même nom (`name`) peuvent être validées à l'aide de `z.array(/* validateur */)`
- Toutes les autres entrées peuvent être validées à l'aide de `z.string()`

Les fonctions d'extension, notamment `.refine()`, `.transform()` et `.pipe()`, sont également prises en charge sur cet objet. Les validateurs suivants sont pris en charge pour les champs de données de formulaire :

Pour appliquer une union de différents validateurs, utilisez le wrapper `z.discriminatedUnion()` pour affiner le type en fonction d'un champ de formulaire spécifique. Cet exemple accepte une soumission de formulaire pour créer (`create`) ou mettre à jour (`update`) un utilisateur, en utilisant le champ de formulaire avec le nom `type` pour déterminer l'objet à valider :

```ts
import { defineAction } from 'astro:actions';
import { z } from 'astro:schema';

export const server = {
changeUser: defineAction({
accept: 'form',
input: z.discriminatedUnion('type', [
z.object({
// Correspond lorsque le champ `type` est défini sur la valeur `create`
type: z.literal('create'),
name: z.string(),
email: z.string().email(),
}),
z.object({
// Correspond lorsque le champ `type` est défini sur la valeur `update`
type: z.literal('update'),
id: z.number(),
name: z.string(),
email: z.string().email(),
}),
]),
async handler(input) {
if (input.type === 'create') {
// l'entrée correspond à { type: 'create', name: string, email: string }
} else {
// l'entrée correspond à { type: 'update', id: number, name: string, email: string }
}
},
}),
};
```

### `isInputError()`

<p>
Expand Down
Loading