# Discourse toolkit to render forms

**URL:** https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439
**Category:** Developer Guides
**Created:** [13 Settembre 2024, 9:20pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439 "2024-09-13T21:20:27Z")
**Posts on this page:** 9
**Page:** 2

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [27 Marzo 2025, 6:05pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/25 "2025-03-27T18:05:15Z")

</div>

Sì, potrebbe funzionare. Proverò con questa soluzione.

Immagino stavo cercando un’opzione “nativa del framework” ma questa è sicuramente un’alternativa assolutamente ragionevole. Grazie.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [31 Marzo 2025, 6:11pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/26 "2025-03-31T18:11:36Z")

</div>

{“type”:“oggetto”  
}

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1 Aprile 2025, 3:04pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/27 "2025-04-01T15:04:12Z")

</div>

Quindi le cose con il caricamento delle immagini diventano ancora più curiose.

A volte, quando apro una finestra di dialogo per caricare un’immagine utilizzando un controllo del modulo, ricevo questo errore:

```plaintext
selectedText - utilities.js:137:25
TypeError: ancestor is null

```

```plaintext
 const postMenuArea = ancestor.querySelector(".post-menu-area");

```

```plaintext
    <form.Field
      @name="upload_url_1"
      @title="Upload"
      @onSet={{this.handleUpload}}
      as |field|
    >
      <field.Image @type="branding" />
    </form.Field>

```

Questo è particolarmente curioso perché il mio modulo si trova in una finestra modale che non ha nulla a che fare con i post.

Alla fine tutto funziona, è solo leggermente brutto sulla console del browser.

Saluti!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [12 Maggio 2025, 6:54pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/28 "2025-05-12T18:54:43Z")

</div>

> [@awesomerobot](#):
>
> Penso che l’importazione del Form non fosse corretta, quindi ho aggiornato OP

Ma non hai aggiornato OP o è stato ripristinato. E ho perso più tempo di quanto vorrei ammettere per scoprirlo.

> [@system](#):
>
> Ecco l’esempio più basilare di un form:
> 
> ```plaintext
> import Component from "@glimmer/component";
> import { action } from "@ember/object";
> import Form from "discourse/form";
> 
> ```

Queste guide sono su github? Giusto? Se è così, potrebbero collegarsi a github?

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [12 Maggio 2025, 7:49pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/29 "2025-05-12T19:49:06Z")

</div>

Ah sì, non mi ero reso conto che questo argomento fosse generato dal nostro repository di documentazione, quindi è stato ripristinato e non ho mai seguito… adesso arriva una correzione adeguata

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [12 Maggio 2025, 10:47pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/30 "2025-05-12T22:47:12Z")

</div>

Grazie!

Un’altra correzione potrebbe essere quella di creare un componente tema alla sorgente in modo che non si possa essere ingannati nel fare di nuovo la modifica nel posto sbagliato e io potrei inviare una pull request.

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [13 Maggio 2025, 9:14am UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/31 "2025-05-13T09:14:31Z")

</div>

> [@pfaffman](#):
>
> non può essere ingannato nel fare la modifica nel posto sbagliato di nuovo

Nascondiamo il pulsante di modifica negli argomenti #Documentation > Developer Guides, ma penso che le persone lo aggirino usando le scorciatoie da tastiera o la modifica rapida. Altre cose da nascondere/disabilitare! 😅

> [@pfaffman](#):
>
> Potrei inviare una PR.

Abbiamo questo in fondo a ogni documento, con un link al file sorgente. Quindi, questa è probabilmente la cosa migliore da usare se vuoi fare una PR:

> [@system](#):
>
> Questo documento è controllato in versione - suggerisci modifiche [su github](https://github.com/discourse/discourse-developer-docs/blob/main/docs/03-code-internals/21-form-kit.md).

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [13 Maggio 2025, 10:31am UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/32 "2025-05-13T10:31:13Z")

</div>

> [@david](#):
>
> ma penso che le persone lo aggirino usando le scorciatoie da tastiera o la modifica rapida.

Ah. Ha senso. Inoltre, spesso le regole non si applicano agli amministratori.

> [@david](#):
>
> Abbiamo questo in fondo a ogni documento

Aspetta. Cosa?

> [@system](#):
>
> Questo documento è controllato in versione - suggerisci modifiche [su github](https://github.com/discourse/discourse-developer-docs/blob/main/docs/03-code-internals/21-form-kit.md).

Oh. Ops. È scritto a caratteri minuscoli, ma ora che lo vedo, ricordo di averlo già visto prima. 🤷

Ho fatto altri progressi questa volta. Sto facendo un sacco di cose piuttosto personalizzate (come dover attivare del testo che viene visualizzato quando si inserisce un campo) che potrebbero impedirmi di poterlo usare.

Hai idea di come posso attivare una funzione quando si inserisce un campo? (Caso d’uso: quando si inserisce il campo della chiave API di Digital Ocean, viene visualizzato un testo che descrive come ottenere la chiave API).

EDIT: Sì, certo. Caro [https://ask.discourse.com/](https://ask.discourse.com/) è stato in grado di dirmelo! È dolorosamente ovvio una volta che lo sai. 🤷

```plaintext
import { on } from "@ember/modifier";
...
  @action
  hostnameClicked(event) {
    this.setHelpText(i18n("pfaffmanager.help.hostname"));
  }
...

            <field.Input @type="text" {{on "click" this.hostnameClicked}} />

```

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [23 Dicembre 2025, 5:55pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439/33 "2025-12-23T17:55:56Z")

</div>

> [@system](#):
>
> `validateUsername(name, value, data, { addError }) {`

questo è errato: dovrebbe essere `validateUsername(name, value, { data, addError }) {` altrimenti si otterrà un errore di destrutturazione.

[Previous page](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439.md?page=1)
