Crea Moduli Personalizzati con WebBlocks Forms

Costruisci il modulo intorno alle domande a cui i visitatori devono rispondere. WebBlocks Forms permette di scegliere campi, validazione, passaggi e domande condizionali, raccogliendo i risultati nel CMS. Il blocco Form nativo lo inserisce nella pagina; la casella del plugin conserva gli invii.

L'esempio è Northstar Studio con Project enquiry. Il primo passaggio chiede chi scrive e il tipo di progetto. Website project mostra una domanda obbligatoria sul sito. Il secondo raccoglie descrizione, budget e file facoltativi e una presa visione. Invierai come visitatore, leggerai le risposte, scaricherai l'allegato privato, segnerai la richiesta come risposta ed esporterai CSV.

La guida è stata verificata con l'archivio pubblicato Forms 0.10.5 e WebBlocks CMS 1.105.26, interfaccia inglese, tema chiaro e dati fittizi. Include l'integrazione esplicita del service provider nell'host richiesta dal ZIP testato. Notifica e copia al visitatore mostrano volutamente Not configured: consegna reale, webhook esterno e iscrizione Campaigns non sono stati testati. Percorso, filtri condizionali, passaggi, download privato, stati, CSV e importazione Contact Form sono stati eseguiti localmente. Immagini e nomi dei controlli restano in inglese per corrispondere alle schermate.

Scegliere Forms o Contact Form integrato

Scelta Quando serve Destinazione
Contact Form nativo Campi standard nome, email, oggetto e messaggio. Contact Messages.
WebBlocks Forms Campi propri, scelte, passaggi, condizioni o allegati. Forms → Submissions.

Forms non sostituisce Contact Form. Possono convivere con caselle separate. Importare crea un nuovo modulo del plugin; non sposta i vecchi messaggi né modifica automaticamente il blocco esistente.

Il modulo appartiene a un sito. Campi, gestione e azioni appartengono al modulo; il blocco conserva l'handle. Più pagine riutilizzano la stessa definizione. Cambiare un campo modifica ogni istanza, senza creare una copia per pagina.

Consulta il riferimento Forms per pacchetto e contratti, o Aggiungere un modulo contatti e leggere messaggi per l'alternativa semplice.

Prima di iniziare

Prepara sito di prova, bozza e account Super admin. Forms 0.10.5 dichiara CMS ^1.92.1 e PHP >=8.3; il catalogo elenca PHP ^8.3 e Laravel ^13.0. Verifica compatibilità con host e requisiti CMS. Servono le estensioni PHP JSON e ZIP.

Cinque permessi distinguono visualizzazione moduli, gestione, gestione invii, esportazione e Form Settings. Costruire un modulo non concede automaticamente casella o esportazioni. Assegna permessi e siti necessari; consulta Ruoli e permessi.

L'amministratore hosting deve occuparsi di provider, storage privato, posta e pianificazione della conservazione. La posta locale basta per imparare; prova la consegna reale prima di promettere una risposta email. Usa caselle controllate, non gli indirizzi fittizi dell'esempio.

Il plugin è gratuito nel catalogo WebBlocks. Commerce, Appointments, Memberships e Campaigns non servono qui. Un budget indicato non diventa pagamento o appuntamento.

1. Installa Forms e completa l'integrazione host

  1. Accedi come Super admin e apri System → Plugins.
  2. Scegli Browse Plugin Catalog, poi WebBlocks Forms.
  3. Controlla versione, compatibilità e note.
  4. Scegli Install from Catalog per la versione compatibile e Enable Plugin nei dettagli.
  5. Con uno ZIP affidabile dell'amministratore usa Plugin ZIP → Upload Plugin ZIP, controlla e abilita.
Forms 0.10.5 pubblicato abilitato su WebBlocks CMS 1.105.26

I nuovi pacchetti partono disabilitati. Installazione e attivazione attuali preparano il database. Se compare Plugin migrations pending, risolvi la configurazione nei dettagli e verifica le tabelle. Dal pannello catalogo o ZIP non serve compilare sorgenti.

Compaiono Forms, Submissions, Import Contact Form e Settings nel gruppo Forms. Scegli Northstar Studio o il sito previsto nei selettori disponibili. Tabelle sane non provano invio pubblico, posta o attività di conservazione in esecuzione.

Passaggio hosting per lo ZIP testato

In Forms 0.10.5 / CMS 1.105.26 editor e blocco erano presenti, ma il provider non si avviava automaticamente. L'invio falliva per il limitatore nominato non registrato. L'host funzionante registra esplicitamente il provider attivo: è configurazione reale, non una modifica solo per le immagini.

Chiedi di aggiungere il codice dentro il metodo boot() esistente di App\Providers\AppServiceProvider dell'host, mantenendo la logica già presente. Il registro consente l'avvio solo con Forms attivo:

$this->app->booted(function (): void {
    $registry = $this->app->make(
        \WebBlocks\Cms\Support\Plugins\PluginRegistry::class
    );

    if ($registry->isActive('webblocks-forms')) {
        $provider = $registry->get('webblocks-forms')?->providerClass();

        if ($provider !== null && class_exists($provider)) {
            $this->app->register($provider);
        }
    }
});

Pulisci la configurazione obsoleta con php artisan optimize:clear e riavvia eventuali worker persistenti. Prova poi un invio reale. Si caricano anche configurazione, limiti upload e tempi di Forms. Se un host nuovo avvia già il provider, verificalo prima di un'integrazione duplicata. Non rimuovere il limitatore per nascondere l'errore.

2. Controlla Form Settings del sito

Apri Forms → Settings sul sito previsto. Esempio:

Impostazione Esempio Significato
Default notification recipient hello@example.test Casella fittizia in assenza di destinatario esplicito del modulo.
Store submissions in the CMS Attivo Controlla e abilita esplicitamente anche sul modulo.
Delete submissions after (days) Vuoto Nessuna finestra del sito in questa prova.
Maximum upload size (KB) 2048 Limite del sito, comunque soggetto al tetto dell'installazione.
Form Settings Northstar Studio con destinatario fittizio e limite 2048 KB

Seleziona Save. Il destinatario vuoto è valido: prima Send notifications to del modulo, poi questo predefinito, Contact del sito, CONTACT_RECIPIENT_EMAIL, infine mittente configurato. Scegli consapevolmente la destinazione reale invece di un ultimo ripiego inatteso.

La versione testata legge storage e conservazione da ogni modulo. Cambiare impostazioni del sito omonime non aggiorna automaticamente i moduli né la loro cancellazione. Imposta e verifica la propria sezione Handling. Fallback destinatari e limite upload del sito valgono nell'esempio.

3. Crea il modulo e scegli la gestione

Apri Forms → Forms → Add form, inserisci Project enquiry in Name, northstar-project-enquiry in Handle e lascia Accepting submissions selezionato.

L'handle usa parole minuscole separate da un trattino. I blocchi lo memorizzano: sceglilo prima. Cambiare nome non cambia handle; un nuovo handle scollega le istanze fino all'aggiornamento. Nel multisito usa handle distinti nell'intera installazione e prova la destinazione di ogni sito: il gestore pubblico risolve per handle.

In Handling lascia Store submissions in the CMS acceso, Store the submitter's IP address spento e Delete submissions after (days) vuoto. Metti Submits per minute, per visitor a 5. Lascia Redirect after submit vuoto per vedere l'esito sulla pagina.

Identità e Handling con storage attivo e raccolta IP disattivata

Seleziona Save. La memorizzazione è essenziale: disattivandola non si creano record né azioni successive in questa versione. Non è un metodo supportato per un modulo solo email. La raccolta IP è distinta dai segnali temporanei di protezione locale.

Un limite inferiore restringe il tetto d'installazione; uno superiore non lo alza. Vale per visitatore e modulo. Il redirect deve essere un percorso del sito con singola barra iniziale, come /thank-you; prepara e prova prima la destinazione. Durante la verifica lascialo vuoto.

4. Configura notifica e copia al visitatore

Trova Notification, lascia Email me when a submission arrives selezionato e Send notifications to vuoto per ereditare il sito. Un altro destinatario serve solo a una casella differente.

In Reply to sender attiva Send the visitor a copy of what they submitted. Usa una casella reale monitorata in Visitors reply to; l'immagine usa studio@example.test. Vuoto significa nessun header reply-to. Seleziona Save.

Notifica aziendale e copia facoltativa indipendenti

La copia richiede un campo Email address con valore valido inviato. Un campo testo etichettato “Email” non equivale. Usa un solo campo chiaro. Gli esiti sono separati e senza test non provano la ricezione reale.

Lascia Webhooks e Mailing list spenti durante l'apprendimento. Sono azioni facoltative, non requisiti per raccogliere invii. Le vedremo dopo la casella.

5. Aggiungi gli otto campi

Dopo il salvataggio, Fields offre Add field. Aggiungi questi record. Lo stesso Step condivide schermata; Up e Down riordinano dentro il passaggio.

Etichetta Tipo Key Step Obbligatorio
Your name Single-line text full_name 1 Sì
Email address Email address email 1 Sì
Project type Dropdown project_type 1 Sì
Current website Single-line text current_website 1 Sì, solo quando la condizione corrisponde
Tell us about your project Paragraph brief 2 Sì
Indicative budget (EUR) Number budget 2 No
Attach a short brief File upload brief_file 2 No
I agree that Northstar Studio may use these details to respond to my project enquiry. Consent enquiry_consent 2 Sì
Otto domande distribuite in due passaggi

Per Your name scegli Single-line text, Key full_name, Required, Step 1. In Validation Minimum 2, Maximum 100. In Copy → EN English, Label Your name e Help text How should we address you?. Salva.

Nome obbligatorio con chiave stabile, primo passaggio e controllo lunghezza

Le chiavi iniziano con una lettera e usano minuscole, cifre e underscore. Le etichette sono testi visibili; le chiavi identificano risposte per storage, condizioni e integrazioni. Dopo i primi invii le chiavi esistenti sono bloccate: sceglile subito stabili.

L'editor mostra più tipi insieme; valgono solo le regole applicabili. Minimum/Maximum è lunghezza per testo/Paragraph, valore per Number e dimensione KB per Maximum di file. Usa 20–2000 caratteri per la descrizione e 500–50000 per il budget facoltativo. È una risposta, non prezzo o addebito.

Altri tipi sono Phone number, Radio buttons, Checkboxes, Date e Hidden value. Radio sceglie uno, Checkboxes più valori. I nascosti non sono affidabili per permessi, pagamenti o decisioni non controllabili dal visitatore.

6. Separa valori e etichette delle opzioni

Per Project type scegli Dropdown, chiave project_type, obbligatorio, Step 1. In Options un valore stabile per riga:

branding
website
other
Valori Dropdown branding, website e other

In Copy → EN English, Label Project type, Help text Choose the closest match. e Option labels nello stesso ordine:

Brand identity
Website project
Something else
Testi inglesi e etichette parallele con altre lingue sotto

Salva. Il visitatore vede Website project, il valore inviato è website. Le condizioni confrontano il valore, non la traduzione. Non riordinare una casella senza controllare l'altra: vengono abbinate per posizione. Riga vuota significa mostrare il valore memorizzato.

Ogni lingua abilitata ha Label, Placeholder, Help text, Error message e Option labels. Compila il principale e controlla le altre lingue offerte. Tradurre la pagina non traduce i record del plugin. Error message può sostituire più errori: scrivilo utile per valori invalidi e obbligatori vuoti.

7. Rendi condizionale Current website

Crea Current website come Single-line text obbligatorio, chiave current_website, Step 1, Maximum 255. Salva, riapri se serve e trova When to show this field:

  1. Depends on: scegli project_type.
  2. Condition: scegli is.
  3. Value: inserisci website.
  4. Help text inglese: Your existing address, or write Not launched yet.
  5. Seleziona Save.
Condizione Current website confrontata con website nello stesso passaggio

Il controllore deve stare nello stesso passaggio. Crealo prima e verifica il passo del dipendente. Altri confronti: is not, has any answer, has no answer; gli ultimi ignorano Value. Evita cicli e prova i rami dopo modifiche a passaggi o opzioni.

Con JavaScript Website project mostra la domanda ripristinando l'obbligo; altre scelte la nascondono. Il server ricontrolla: un campo non chiesto non viene validato né salvato anche con valore aggiuntivo. Senza JavaScript tutti sono visibili e il browser può richiedere una risposta anche con condizione server falsa. Offri un ripiego come “Not applicable” e provalo: il server scarta comunque quella risposta. Questo è stato verificato anche anonimamente senza JavaScript.

È Single-line text, non ricerca automatica del sito. Maximum limita lunghezza senza provarne l'esistenza. Not launched yet è ammesso intenzionalmente.

Crea Attach a short brief con File upload, chiave brief_file, Step 2, facoltativo. Maximum 2048, Minimum vuoto. Descrivi documenti e dimensione in Help text e salva.

Campo file facoltativo con Maximum 2048 KB

Vale il minore limite positivo tra installazione, Form Settings del sito e campo. Qui il tetto è 10240 KB, ridotto a 2048 KB da sito e campo. PHP/webserver possono imporre meno. Se il caricamento fallisce prima di un errore utile, fai verificare questi limiti.

Le estensioni arrivano dalla configurazione Forms dell'installazione; Options non definisce la lista file. I valori predefiniti ammettono documenti comuni, immagini e ZIP e il server controlla il contenuto. northstar-brief.txt contiene solo testo fittizio. I file sono privati del plugin, fuori dalla Media Library pubblica, con download autorizzati temporanei.

Aggiungi Consent, chiave enquiry_consent, Step 2, Required attivo e il testo della tabella come Label. Consent conserva il testo accettato nello snapshot; Checkboxes generico non produce lo stesso record. Scrivi secondo lo scopo reale e fornisci informazioni prima dell'invio. Questa accettazione non è un'iscrizione newsletter.

9. Inserisci Form nativo in una bozza

Crea Start a studio project sullo stesso sito. Aggiungi titolo e spiegazione con blocchi normali. L'esempio usa Tell us what you have in mind. We review enquiries before arranging any work.

In Main seleziona Add Block → Form, apri Block Fields, scegli Project enquiry in Form, poi Save Block. Usa Preview della pagina salvata.

Blocco Form nativo che seleziona Project enquiry

Il blocco sceglie l'attivo per handle. Se manca, è inattivo, non selezionato o senza campi, non appare nulla. Con elenco vuoto controlla sito e accettazione degli invii.

Questa versione non offre un pannello generale titolo/intro/pulsante/successo per nuovi moduli. L'esempio usa blocchi pagina e i valori Send e Thank you. Your message has been received. Non cercare campi di testo Contact Form nel blocco plugin. L'importatore conserva separatamente quelli importati.

L'anteprima istantanea non supporta moduli plugin; salva e usa quella della pagina. L'invio dall'anteprima salvata crea comunque un record reale. Usa test e dati fittizi. Evita doppie istanze dello stesso modulo nella pagina: identificatori e progresso sessione appartengono al modulo, non a ciascuna posizione.

10. Completa i due passaggi come visitatore

Apri anteprima salvata o pagina locale verificata. Step 1 of 2 chiede Your name, Email address e Project type. Current website è nascosto all'inizio.

Primo passaggio prima della scelta del progetto

Inserisci Example visitor, visitor@example.test, scegli Website project. Appare Current website: scrivi Not launched yet o indirizzo fittizio appropriato.

Website project mostra Current website

Premi Continue: appare Step 2 of 2. Nessun invio è ancora memorizzato; le risposte restano in sessione fino alla fine. Abbandonare non è completare una richiesta. Cookie e continuità sessione devono funzionare.

Scrivi almeno 20 caratteri, ad esempio We are planning a small website for a neighbourhood craft workshop and would like to discuss the structure. Usa budget 2500, piccolo file fittizio e consenso. Back torna indietro; ricontrolla risposte dopo un cambio ramo.

Secondo passaggio con descrizione, budget e file facoltativi, consenso obbligatorio

Premi Send una volta. Il successo normale sostituisce il modulo:

Messaggio Thank you predefinito al completamento

Prova a ritmo umano. Ogni passaggio ha un nuovo controllo del tempo; invii automatici troppo rapidi possono mostrare successo senza record. Il messaggio non prova storage o email. Cerca la richiesta precisa nella casella.

Prima di aprire, prova l'altro ramo, obbligo mancante, budget fuori intervallo e file non ammesso o grande. Senza JavaScript completa gli stessi passaggi e verifica che la risposta di un ramo falso non sia salvata.

11. Leggi l'invio e gestisci lo stato

Apri Forms → Submissions del sito, scegli Project enquiry in Form e Apply. Search cerca nelle risposte, Status filtra, Reset azzera. La lista mostra ricezione, modulo, stato e notifica.

Casella filtrata con il nuovo record Project enquiry

Seleziona Open. New passa a Read all'apertura. Le risposte usano le etichette dello snapshot e mostrano Attachments. Le opzioni possono apparire come website, valore memorizzato, anziché etichetta. Consent riporta accettazione e testo.

Dettaglio delle risposte e allegato privato fittizio

Usa Download per il file. Servono autenticazione e permesso invii oltre alla firma breve. Se scade, riapri il dettaglio. Non pubblicare link privati o immagini del loro URL completo.

Stato Uso
New Nuovo lavoro non aperto.
Read Letto, non necessariamente risposto.
Replied Dopo una risposta reale tramite il canale consueto.
Archived Archiviato; non addestra il filtro.
Quarantined Trattenuto per revisione; azioni soppresse.
Spam Abuso trattenuto come spam; azioni soppresse.

Dopo aver risposto scegli Replied, Save. Cambia lo stato, non compone né invia una risposta. Eliminare è permanente. Scarica il necessario e segui la conservazione prima di cancellare deliberatamente.

12. Verifica ogni esito di consegna

Trova Delivery, con Notification e Reply to sender separati. Mailing list: Skipped indica l'azione facoltativa spenta. La pagina sorgente è distinta dalle risposte.

Esiti separati, pagina sorgente e controlli di stato
Esito Significato
Sent Trasporto ha accettato; non prova ricezione o lettura.
Failed Tentativo fallito; controlla dettaglio, destinazione e trasporto.
Skipped Omissione intenzionale, ad esempio azione spenta.
Not configured Manca un requisito; log locale non è vera consegna.
Nessun tentativo Nulla tentato; verifica storage, protezione e azioni.

La memorizzazione precede le azioni. Destinatario errato o email fallita non ritirano la richiesta. I due esiti possono differire. Configura posta CMS e mittente reali e prova entrambe le caselle. Cambiare stato o impostazioni non ripete automaticamente l'invio; qui non c'è pulsante di reinvio.

Local protection · last 30 days riassume decisioni del sito. I sospetti possono restare mentre email, copie, webhook e Campaigns sono soppressi. Segna Spam per abuso reale; ripristinare falsi positivi a New, Read o Replied registra correzione, senza implicare la ripetizione delle azioni.

13. Esporta il modulo scelto come CSV

Torna a Submissions, scegli Project enquiry, filtri Status/Search e Apply, poi Export CSV. È un permesso distinto e richiede un modulo: All forms non definisce colonne comuni.

Casella filtrata con Export CSV e richiesta Replied

Il CSV contiene invii filtrati, ID, data, stato e risposte. Gli allegati sono nomi file, non byte né link pubblici permanenti. Scaricali dal dettaglio autorizzato.

Le intestazioni derivano dal primo snapshot esportato; le altre righe si allineano per chiave. Se lo schema è cambiato molto, controlla: un nuovo campo assente nel primo snapshot non entra automaticamente nell'intestazione. UTF-8 con BOM favorisce i fogli di calcolo.

Il CSV è uscito dal controllo accessi CMS. Usa l'importazione sicura del programma, soprattutto con testo non affidabile. Confronta conteggio, risposta nota e nome allegato con la casella.

14. Importa un Contact Form esistente

Apri Forms → Import Contact Form del sito, trova la pagina e scegli Import una volta. Sono inclusi i blocchi bozza, come nell'immagine.

Importatore con Contact Form precedente fittizio del sito

Crea un modulo con quattro domande, testi disponibili nelle lingue, titolo/intro/pulsante/successo, consenso e notifica. Leggi le note. Il destinatario ereditato resta tale, la notifica spenta resta spenta. Consenso mancante può essere ripreso dalla lingua principale e va controllato. Il nuovo modulo memorizza anche con vecchia impostazione di storage disabilitata.

L'originale resta intatto e funzionante; Contact Messages non si sposta. Controlla campi, testo, consenso e consegna, poi sostituisci in bozza o aggiornamento preparato. Importare non cambia la pagina pubblica. Ripetere crea un altro modulo, senza aggiornare la prima copia.

15. Aggiungi integrazioni facoltative con criterio

In Webhooks inserisci Endpoint URL, configura Signing secret privato, abilita e salva. Il ricevente deve comprendere JSON firmato del plugin. Usa un endpoint HTTPS pubblico controllato; rete privata e HTTP non sicuro sono bloccati di default. Non mettere segreti in testi, immagini o note condivise.

Sono ammessi più webhook. Svuotare un URL elimina l'azione conservando consegne passate. Segreto vuoto in un'azione esistente mantiene quello salvato. Verifica esito e sistema ricevente: salvare URL non è un test riuscito. Qui non si invia a endpoint esterni.

Per newsletter installa WebBlocks Campaigns compatibile, abilitalo, prepara posta/lista e usa Mailing list → Offer a newsletter subscription. Servono email utilizzabile e Consent accettato. Verifica il testo usato: la presa visione della richiesta non chiede marketing. Usa un modulo dedicato con testo esplicito, senza attivare l'esempio invariato.

Compila List id solo per una lista precisa, altrimenti vale quella del sito. Le mappature nome usano chiavi. Campaigns richiede conferma via email e l'azione non salta il doppio opt-in. Senza Campaigns attivo la richiesta può funzionare e l'azione risultare Not configured. Non dichiarare iscrizione prima della prova reale di conferma.

16. Mantieni modulo e conservazione

Deseleziona Accepting submissions per una pausa. Le pagine non mostreranno più il modulo: prepara un'alternativa utile. Eliminare un modulo con invii lo disattiva preservando lo storico; senza invii può cancellarsi.

Etichette, tipi e ordine possono cambiare per il futuro; i vecchi invii conservano snapshot. Eliminare un campo smette di chiederlo senza cancellare risposte. Le chiavi esistenti sono fisse dopo gli invii. Riprova condizioni, colonne e lingue dopo modifiche strutturali.

Imposta Delete submissions after (days) sul modulo dopo aver deciso il periodo. Di default è assente. L'amministratore deve simulare:

php artisan webblocks-forms:prune-submissions --dry-run

Poi, dopo revisione, pianificare il vero comando con scheduler host o cron:

php artisan webblocks-forms:prune-submissions

Lo scheduler Laravel attivo non lo programma da solo: aggiungi la task. Lavora su più moduli, quindi rivedi tutte le finestre prima del live. Elimina allegati con invii scaduti e temporanei abbandonati. Un flusso incompleto può già avere byte temporanei senza record finale.

Risoluzione dei problemi

Sintomo Primo controllo
Manca Forms Plugin attivo compatibile, database, permessi e sito.
Continue/Send fallisce dopo ZIP Provider host, configurazione e limitatore nominato.
Selettore vuoto Sito pagina, modulo attivo e contesto.
Nessun modulo in pagina Handle, Accepting submissions, campi, salvataggio e plugin.
Current website manca Stesso passo, valore website esatto, condizione e JavaScript.
Obbligatorio nascosto blocca Condizione, script e pagina salvata; anche server deve risolvere il ramo.
Continue resta nel passo Validazione, sessione/cookie, tempo e passo atteso.
Successo senza record Sito/filtro, storage, completamento e protezione/tempi.
Mail Not configured Trasporto, destinatario ed Email address per la copia.
Conservazione sito non cambia il modulo Imposta il proprio periodo Handling.
File respinto Contenuto/estensione, limiti campo/sito/installazione e PHP/server.
Download privato non funziona Scadenza, login/permesso, sito e file.
CSV senza colonne attese Modulo/filtro e primo snapshot storico esportato.
Newsletter non funziona Campaigns attivo, sito/lista, email e consenso newsletter esplicito accettato.
Etichette vecchie nello storico Atteso: lo snapshot conserva la domanda originale.

Controllo finale prima dell'apertura

Verifica installazione, provider e ruoli, handle, storage, entrambi i destinatari, tipi, obblighi, etichette, condizioni, file e consenso. Completa rami a ritmo normale, trova record, prova download e confronta CSV.

Prova visitatore anonimo, telefono e senza JavaScript. Conferma posta reale separatamente, integrazioni e simulazione della conservazione. Pubblica solo dopo e ripeti il test diretto su HTTPS pubblico in ogni lingua offerta.

Continua con riferimento Forms, guida Contact Form, Pubblicare una pagina, Menu di navigazione o Ruoli e permessi.