Guide e tutorial pratici per joomla e le sue estensioni
Guide e tutorial pratici per joomla e le sue estensioni

Joomla 3: registrazione utenti con campi per informazioni supplementari

Fra le varie esigenze che possiamo avere durante la registrazione di un nuovo utente, c'è quella di raccogliere ulteriori dati oltre i soliti nome, username, email e password. Pensate ad un form dove i vostri utenti si iscrivono per una corsa podistica, una richiesta di analisi o l'acquisto di alcuni servizi: il form sarà sempre composto dai soliti campi di registrazione "nome", "nome utente", "pasword", "conferma password", "email" e "conferma email". Poi avremo i nostri campi personalizzati come "indirizzo", "cap", "città", "telefono", "età",........e tutti gli altri campi di cui ci sarà bisogno.

Costruire un form di registrazione con chronoforms V5 integrandolo con la richiesta di ulteriori informazioni

Progettando il nostro form in maniera che ad ogni nuovo utente vengano richiesti altri dati fa aprire un mondo tutto nuovo finora rimasto ad appannaggio di sviluppatori ed utenti avanzati, immaginate che ogni utente, successivamente alla registrazione, possa accedere e visualizzare una pagina con i suoi dati, potendo anche effettuare correzioni e/o cambiare-aggiornare i propri dati come l'indirizzo di casa o la banca di appoggio.

In questo tutorial non ci spingeremo oltre la memorizzazione di questi campi, ma non escludo di poterlo fare in una guida successiva.

Dopo tante guide sappiamo tutti come realizzare un form, ma se qualcuno avesse qualche dubbio può sempre leggere o ripassare il tutorial in questo articolo "Realizziamo un form di contatto avanzato con chronoforms V5".

Quello che invece ci accingiamo a fare è completare il nostro form con i campi necessari alla registrazione per creare un account sul nostro sito realizzato con joomla.

Vediamo le funzionalità di questo form, quello che in pratica ci permetterà di fare seguendo questa guida:

  1. Registrare un utente e quindi associarlo ad un ID univoco, proprio questo è il motivo per cui useremo la funzione di registrazione utenti di joomla.
  2. far compilare dei dati supplementari, noi in questo esempio chiederemo quei dati che di solito servono per emettere una ricevuta fiscale, quindi senza entrare troppo nella normativa (che non è oggetto della guida) perchè ognuno di noi poi avrà i suoi specifici campi, avremo bisogno di: Ragione Sociale, Indirizzo, CAP, Città, Provincia, Codice Fiscale.
  3. Fare in modo tale che i dati dei campi supplementari siano scritti in una nuova tabella del vostro database per essere riutilizzati/modificati e/o cancellati in base alle vostre esigenze (quest'ultima parte sarà oggetto di una prossima guida).

La prima parte del nostro form non la costruiremo perchè è già pronta ed è messa a disposizione da chronoengine fra i form "Dimostrativi" che vengono installati cliccando nel pulsante in alto a destra "Demos" dentro il pannello di controllo di chronoforms V5, quindi clicchiamo sul pulsante "DEMOS" per installare i forms dimostrativi e portate la vostra attenzione al form nominato "demo-joomla-registration". Gli altri form che sono stati installati io li eliminerò con il tasto "DELETE", per non avere inutili form; fatelo anche voi, sarà sempre possibile reinstallarli cliccando nuovamente sul tasto "DEMOS".

Portatevi dentro le impostazioni del form cliccando sul suo nome e rinominiamolo in "registrazione_completa" (come al solito ricordo di non usare spazi vuoti fra una parola e l'altra del titolo del form!). Inseriamo anche una minima descrizione del form che permetterà di capire di cosa si tratta anche ad altri ulteriori eventuali amministratori. Una frase inserita in "Form description" tipo "Form per la registrazione dati per ricevuta fiscale" potrebbe benissimo fare capire di cosa si tratta.

Ricordatevi di salvare di tanto in tanto, premendo "SAVE", altrimenti in caso di black-out o connessione internet assente perderete il lavoro svolto fino a quel momento!

Aggiungiamo adesso nella zona "DESIGN" i 6 campi supplementari che ci siamo prefissati utilizzando delle "Text Box" e trascinando e riordinando gli elementi subito dopo il campo vpassword (verifica password).

  • Ragione Sociale,
  • Indirizzo,
  • CAP,
  • Città,
  • Provincia,
  • Codice Fiscale.

Se volete per i campi CAP, Provincia e Città potrete integrare la guida "Caselle dropdown collegate fra loro in Chronoforms V5" in maniera tale da far scegliere la città in base alla provincia inserita, mentre potrete integrare per il campo Codice Fiscale la guida "Controllo del codice fiscale con chronoforms".

Noi in questa guida per semplicità non prenderemo in considerazione i precedenti tutorial che però potrete applicare successivamente alla fine di questa guida. Quindi dopo aver inserito le 6 "Text Box" editiamo le voci "Field Name", "Field ID" e "Label" della prima casella relativa alla ragione sociale, inserendo nel primo "text box":

  • Field Name: ragione_sociale
  • Field ID: ragione_sociale
  • Label: Ragione Sociale

Ricordo ancora una volta che è assolutamente necessario che i campi Field Name e Field ID non abbiano spazi, quindi se volessimo dare dei nomi che contengono 2 parole, preoccupiamoci di non lasciare spazi vuoti inserendo un underscore "_", facciamo anche attenzione che non abbiano caratteri accentati e altri simboli che ne comprometterebbero l'uso del form. Ove vi fosse la necessità di inserire un doppio nome come in questo caso usate appunto il trattino basso. Un occhio di riguardo va dato anche alle maiuscole e minuscole, ragione_sociale non è come Ragione_Sociale o RAGIONE_SOCIALE, questi campi sono case sensitive , quindi datevi una regola che vale per tutto in maniera di non dover impazzire per capire perchè il form non funziona. Io in questo caso userò tutte lettere minuscole.

Per il campo Label, che è il campo che corrisponde al nome che verrà visualizzato accanto al campo potrete usare invece spazi e simboli in maiuscolo o minuscolo a piacimento.

Passiamo adesso alla rinomina il resto dei campi, per il "Text Box" "indirizzo":

  • Field Name: indirizzo
  • Field ID: indirizzo
  • Label: indirizzo

Rinominiamo il "Text Box" "cap":

  • Field Name: cap
  • Field ID: cap
  • Label: CAP

Rinominiamo il "Text Box" "città":

  • Field Name: citta
  • Field ID: citta
  • Label: Città

Rinominiamo il "Text Box" "provincia":

  • Field Name: provincia
  • Field ID: provincia
  • Label: Provincia

Rinominiamo il "Text Box" "codice fiscale":

  • Field Name: codice_fiscale
  • Field ID: codice_fiscale
  • Label: Codice Fiscale

Passiamo adesso ad inserire gli elementi necessari nella zona SETUP:

In "On load" inseriremo un elemento "HTML (Render Form)"

Mentre in "On submit" insriremo un elemento "Joomla Registration" ed un "Display Message"

Dentro l'elemento "Joomla Registration" dovremo inserire nella zona verde "On Success" un elemento "Custom code" ed un elemento "Db Save", il primo deve essere posizionato sopra il secondo.

Inseriremo dentro la zona rossa dell'elemento "Joomla Registration" in "On fail" un elemento "Event Loop", dovremo adesso avere una situazione come quella nell'immagine sottostante:

 chronoforms registrazione campi personalizzati lato setup

Vediamo di capire cosa sono queste zone verdi e queste zone rosse: la prima zona, quella "On load" è la parte che legge gli elementi inseriti nel momento esatto in cui si carica il form, ed è per questo che nella maggior parte dei casi l'elemento "HTML (Render Form)" si trova inserito in quella posizione.

Nella zona "On submit" vengono inseriti tutti quegli elementi che dovranno eseguire "qualcosa" solo dopo aver premuto il pulsante "submit".

Nel dettaglio di questo form, dopo aver premuto il pulsante  "submit" che potremmo anche chiamare in italiano "registrati" oppure "invia", spedisce parte del contenuto dei campi compilati all'elemento "Joomla Registration", parte del contenuto all'elemento "Db Save" (saranno inseriti in un apposita tabella che creeremo più avanti solo il contenuto dei campi supplementari), dopo che l'elemento "Joomla Registration" ha effettuato le sue verifiche tipo account esistenti, email esistente e inserimento di caratteri non accentati.

Quindi se le condizioni di acquisizione dei dati sono ottimali, verranno scritti nella tabella dei campi supplementari ciò che l'utente ha inserito, ricevendo successivamente alla pressione del pulsante una pagina con un messaggio: quello che scriveremo nell'elemento "Display Message".

Se invece le condizioni di acquisizione falliranno, sarà l'elemento "Event loop" inserito in "On fail" che provvederà a riportare il form allo stato iniziale permettendoci di correggere i dati inseriti.

Credo che a questo punto abbiate capito anche l'importanza di una certa gerarchia degli elementi.

Andiamo adesso a creare la tabella dove verranno salvati i dati dei campi supplementari, e successivamente a configurare i nostri elementi.

Salvate il vostro form e portatevi nel pannello di controllo di chronoforms, inserite un flag accanto al vostro form e cliccate sull'icona "Create Table". Andremo a creare la tabella dove andranno scritti i contenuti dei campi supplementari.

Una considerazione prima di andare avanti, questo form è composto da una serie di campi supplementari e da una serie di campi "standard" quali il "nome", "nome utente", "pasword", e "email". Della memorizzazione del contenuto dei campi "standard", noi non dobbiamo prendercene carico, sarà l'elemento "Joomla Registration" che si occuperà di questo interfacciandosi perfettamente con il login di joomla, quindi gli unici campi da creare con la funzione "Create Table" saranno quelli dei campi supplementari.

Iniziamo con il dare un nome appropriato alla tabella che stiamo creando, chronoforms vi starà proponendo qualcosa di simile:

 #__chronoengine_chronoforms_datatable_registrazione_completa

 Dove al posto dei primi 2 (#_) caratteri verrà inserito il prefisso del vostro database.

Cancellate il nome proposto ed inserite al suo posto:

registrazione_completa

Configuriamo adesso i nostri campi andando a scegliere quali fra quelli proposti dovranno fare parte della nostra tabella e che lunghezza dovranno avere.

chronoforms crea tabella

facendo riferimento all'immagine sovrastante, queste le operazione da compiere:

  • Rinominate il primo campo da id a cf_id, questa modifica ci servirà nelle prossime guide
  • abilitate inserendo un flag nella colonna "enable" i seguenti campi: cf_id, uniq_id, user_id, created, modified, ragione_sociale, indirizzo, cap, citta, provincia, codice_fiscale
  • modifichiamo la lunghezza dei campi: ragione_sociale a 128, indirizzo a 64, cap a 20, citta a 64, provincia a 64, codice_fiscale a 20
  • Premete in alto a destra l'icona "SAVE" per salvare le modifiche

 Ritorniamo dentro il form per configurare alcuni elementi nella zona "SETUP"

Inseriamo nel custom code nella finestra "content"questa istruzione php

 <?php
$form->data['user_id'] = $form->data['_PLUGINS_']['joomla_registration']['id'];
?>

Questa istruzione farà in modo che al momento dell'iscrizione, le informazioni dei campi supplementari abbiano il campo user_id compilato e con lo stesso numero associato all'ID utente appena creato e corrispondente nella tabella #__users

Questo punto è fondamentale in quanto solo così potremo in futuro applicare quei "meccanismi" che ci consentiranno, ad esempio, di far loggare l'utente e di fargli trovare la sua scheda con i campli supplementari!

Possiamo dire che questa stringa associa i valori "nome", "nome utente", "pasword" e "email" della tabella #__users di joomla, con i valori dei campi "ragione_sociale", "indirizzo", "cap", "citta", "provincia", "codice_fiscale" attraverso la scrittura della chiave primaria della tabella #__users di joomla nel campo user_id della tabella registrazione_completa, campo che funzionerà da chiave secondaria.

 Configuriamo adesso l'elemento "DBSave".

  • inseriamo una label per ricordarci cosa fà, ad esempio "Scrive i dati dei campi supplementari"
  • su Enabled inseriamo Yes
  • in Table name scegliamo la tabella "registrazione_completa"
  • in Save under Model ID inseriamo NO
  • in Multi save inseriamo NO
  • in Model ID inseriamo Data
  • in Force save inseriamo NO
  • in Update conditions lasciamo vuoto

Scriviamo un messaggio di benvenuto dentro l'elemento "Display Message" usando alcuni nomi dei field ID (fra parentesi graffe) utilizzati nel form, quindi:

<p>gentile {name}, <br />
grazie per la tua registrazione. <br />
Riceverai una email a questo indirizzo {email} <br />
con un link per l'attivazione del tuo account.</p>

Salvate e successivamente cliccate su "Test Form" per effettuare un test di registrazione.

L'utente dovrà ricevere un email con un link per attivare l'account, mentre l'amministratore ne dovrà ricevere una che l'avvisa che un nuovo utente si è registrato.

Chronoforms ci offre infinite possibilità, quindi ove se ne rendesse necessario possiamo inserire un elemento "email" dentro On succes dell'elemento "Joomla registration" subito dopo "DBSave" in modo che invii una email all'amministratore, all'utente oppure a tutte e due, con tutto il riepilogo dei dati inseriti. Per questa implementazione basterà basarsi su questa guida "Realizziamo un form di contatto avanzato con chronoform V5"

Spero che questa guida vi sia stata di aiuto, e se ritenete di potermi ringraziare offrendomi un caffè cliccate pure nel pulsante sottostante, oppure cliccate su uno dei banner pubblicitari.

offrimi un caffè

Commenti   

0 # tisba 2017-01-29 22:51
Guida interessante!
Poi hai scritto la guida su come fare per rileggere i dati degli utenti registrati?
0 # giusebos 2017-01-29 23:38
www.icagenda.it/chronoforms-v5-modificare-i-propri-dati.html
0 # Giorgio 2017-01-30 17:06
Ciao, ho seguito la tua bellissima guida per creare un form di registrazione con campi aggiuntivi e funziona perfettamente fino a che eseguo i test.
Nel momento in cui però lo sposto in una voce di menu' o in un articolo con l'apposito plugin, il form non funziona piu', premo Submit e nulla accade.
Quale può essere il mio errore ?
0 # giusebos 2017-01-30 17:27
Lo spostamento di una voce di menù non può avere nessun effetto su un form, quindi l'unico fattore che potrebbe influenzare il form è la cache: elimina quella del sito, di chronoforms, del browser.

Infine anzichè collegare voce di menù a form, inserisci il form in un articolo tramite i tag {chronoforms} (attiva il plug in) e collega la voce di menù all'articolo contenente il form.
0 # alessandra 2017-02-07 12:14
Ciao, quando installo ChronoForms5 su joomla mi dice questo messaggio:
Your ChronoForms installation on sushisun.cloudaccess.host is NOT validated.
Come mai?
0 # giusebos 2017-02-07 12:39
Citazione alessandra:
Ciao, quando installo ChronoForms5 su joomla mi dice questo messaggio:
Your ChronoForms installation on sushisun.cloudaccess.host is NOT validated.
Come mai?

Il messaggio vuole semplicemente dire che non hai acquistato nessuna licenza che ti permetta di eliminare la firma "powered by chronoforms".

Quindi il componente è perfettamente funzionale e senza nessuna limitazione, ma se vorrai eliminare la firma potrai acquistare a pochi euri, 6 o 7, la chiave per la validazione da inserire nelle opzioni di chronoforms.
0 # alessandra 2017-02-07 13:06
Okay grazie. Ho un'altra domanda. Ho collegato la voce di menu ad un articolo. Ho intanto abilitato il plugin ma non riesco ad inserire il form all'interno dell'articolo tramite il tag. Puoi spiegarmi come fare? Grazie.
0 # giusebos 2017-02-07 13:26
Citazione alessandra:
Okay grazie. Ho un'altra domanda. Ho collegato la voce di menu ad un articolo. Ho intanto abilitato il plugin ma non riesco ad inserire il form all'interno dell'articolo tramite il tag. Puoi spiegarmi come fare? Grazie.

inserisci nella text area la stringa:
{chronoforms5}nome_tuo_form{/chronoforms5}
0 # Beppe 2017-02-13 17:42
Ciao, come attivo il plugin chronoform5?
Nella lista dei plugin compare chronoform e non chronoform5 e non funziona la stringa {chronoforms5}nome_tuo_form{/chronoforms5} inserita nell'articolo da pubblicare.
0 # giusebos 2017-02-13 17:53
l'unico plug in per chronoforms5 è chronoforms5 e si attiva cliccando sullo stato
0 # Nero 2017-03-15 15:32
Ottimo come sempre!!!
avrei un problema che mi sta mettendo in grossa difficoltà, ho già un modulo di login ampiamente sviluppato con Community Builder e mi chiedevo se fosse possibile integrarlo con un form di Chronoforms, anch'esso sviluppato ampiamente.
0 # giusebos 2017-03-15 15:48
Si certo che è possibile, innestando i campli supplementari del form chronoforms nelle tabelle di CB.
Almeno in teoria, poi andrà fatta qualche verifica.
0 # Nero 2017-03-15 15:57
Citazione giusebos:
Si certo che è possibile.

non sai quanto mi rincuorano queste 5 parole!
Però il mio è il problema inverso, ossia nel form di chronoform (al quale si accede solo dopo login su community builder) vorrei che comparissero come hidden dei campi della registrazione (Nome, Cognome etc).

Proprio qui che mi iniziano i problemi e non so se devo andare a metter mano su chronoform o community builder.
0 # giusebos 2017-03-16 10:24
non mi è chiaro quello che vuoi fare e cosa vuoi "nascondere", ma se parli di creare una pagina speciale dove editare i dati anche quella è fattibile, non ricordo come e non ho un tutorial, però nel forum di joomla.it dovresti trovare dei post dove si spiega questa procedura.
0 # Antonio_AA 2017-05-24 19:34
Salve,
in un semplice form di registrazione che ho creato viene inviata una mail con il link per l'attivazione dell'utente e una seconda mia mail personale di "benvenuto". Come posso inviare una mail soltanto? (in 2 modi: o personalizzando la mail di attivazione che invia joomla, con override in maniera che successivi aggiornamenti di Joomla non creino problemi, o inserendo il link di attivazione nella custom Email).

Grazie
0 # giusebos 2017-05-24 20:49
Citazione Antonio_AA:
Salve,
in un semplice form di registrazione che ho creato viene inviata una mail con il link per l'attivazione dell'utente e una seconda mia mail personale di "benvenuto". Come posso inviare una mail soltanto? (in 2 modi: o personalizzando la mail di attivazione che invia joomla, con override in maniera che successivi aggiornamenti di Joomla non creino problemi, o inserendo il link di attivazione nella custom Email).

Grazie


un semplice form.....
meglio specificare e dare qualche dato supplementare, altrimenti diventa difficile risponderti.
0 # Antonio_AA 2017-05-24 21:09
Citazione:
un semplice form.....
meglio specificare e dare qualche dato supplementare, altrimenti diventa difficile risponderti.
In pratica ho preso il form demo joomla-registration e ho aggiunto un'azione email nell'on success di Joomla Registration. Se hai bisogno di altre info dimmi pure.

Grazie

ps: potrei prendere anche in esame l'override della registrazione originale di Joomla se me lo consigliate
0 # giusebos 2017-05-24 23:24
Citazione Antonio_AA:

In pratica ho preso il form demo joomla-registration e ho aggiunto un'azione email nell'on success di Joomla Registration. Se hai bisogno di altre info dimmi pure.


se non ti serve la seconda email elimina l'azione che hai aggiunto.
0 # Luigi Visintin 2017-07-13 17:28
Buongiorno, ho fatto parecchie ricerche senza trovare una risposta, ma qui ho trovato almeno risposte coerenti e chiare alle domande fatte. Vengo al mio problema: su un sito Joomla 3.7.2 ho una form costruita con Chronoforms per registrare un nuovo utente, e mi sembra che vada tutto bene, ma... non ho scelto la strada di mail con link per attivare il nuovo utente, ma l'attivazione MANUALE di Joomla, perché l'amministratore del sito vuole averne il controllo. Quindi Chronoform manda una mail al nuovo utente (OK) ed una mail all'amministratore (OK) per a vertirlo della nuova registrazione. L'amministratore accede alla lista utenti, trova il nuovo ed abilita le due voci "Abilitato" e "Attivato". A questo punto non so come automatizzare l'invio di una mail all'utente per confermargli l'attivazione. Posso solo fare una mail "a manina". Esiste qualche altro sistema?
Grazie
Luigi Visintin
0 # giusebos 2017-07-13 17:59
Citazione Luigi Visintin:
su un sito Joomla 3.7.2 ho una form costruita con Chronoforms per registrare un nuovo utente, e mi sembra che vada tutto bene, ma... non ho scelto la strada di mail con link per attivare il nuovo utente, ma l'attivazione MANUALE di Joomla, perché l'amministratore del sito vuole averne il controllo. Quindi Chronoform manda una mail al nuovo utente (OK) ed una mail all'amministratore (OK) per a vertirlo della nuova registrazione. L'amministratore accede alla lista utenti, trova il nuovo ed abilita le due voci "Abilitato" e "Attivato". A questo punto non so come automatizzare l'invio di una mail all'utente per confermargli l'attivazione. Posso solo fare una mail "a manina". Esiste qualche altro sistema?
Grazie
Luigi Visintin


Non so se ricordo bene, ma se prima di attivare l'utente flagghi "Ricevi email di sistema" all'interno del suo account, l'utente dovrebbe arrivargli una mail di avviso.
0 # Luigi Visintin 2017-07-13 22:21
Innanzitutto grazie per la rapidissima risposta. Ho fatto innumerevoli prove ma purtroppo senza risultato. Le mail partono regolarmente dal sito all'amministratore ed all'utente, ma sono quelle di Chronoform, con i dati di registrazione. Quando invece vado sulla gestione utenti e trovo la nuova registrazione la modifico per impostare "ricevi mail di sistema", la salvo+chiudo per essere sicuro, quindi rientro in modifica e attivo/abilito l'utente, ma nessuna mail... Altre idee o luoghi in cui guardare?
Grazie
Luigi Visintin
0 # giusebos 2017-07-13 23:34
Citazione Luigi Visintin:
Innanzitutto grazie per la rapidissima risposta. Ho fatto innumerevoli prove ma purtroppo senza risultato. Le mail partono regolarmente dal sito all'amministratore ed all'utente, ma sono quelle di Chronoform, con i dati di registrazione. Quando invece vado sulla gestione utenti e trovo la nuova registrazione la modifico per impostare "ricevi mail di sistema", la salvo+chiudo per essere sicuro, quindi rientro in modifica e attivo/abilito l'utente, ma nessuna mail... Altre idee o luoghi in cui guardare?
Grazie
Luigi Visintin

Forse qui trovi delle indicazioni più precise
http://www.joomla.it/faq-joomla-3/444-amministrazione/8390-come-disabilitare-la-registrazione-degli-utenti.html
0 # amedeo 2017-12-27 23:26
fino a ieri in locale ho utilizzato il form sopradescritto, da ieri non funziona più, mi da errore 403 access forbidden...cosa può essere successo? ho provato anche a reistallare tutto in un'altra macchina ma mi da lo stesso errore....
0 # Giuseppe 2018-02-10 12:38
Salve. Ottima guida complimenti. Visto che Joomla permette di creare solo aree riservate per gruppi e livelli, questa guida può essere utilissima ed un ottima soluzione per creare un'area riservata per ogni singolo utente.
Però ho un problema, funziona bene fino a quando non dò l'invio. Dopo l'invio mi da il seguente errore: Non è possibile trovare la pagina richiesta e non inserisce i dati nella tabella.
Ovviamente ho svuotato le varie cache, ho provato ad inviare i dati direttamente dal form, collegandolo ad una voce di menù ed inserendolo anche in un altricolo. Insomma penso di aver fatto tutti i test. Ho controllato la tabella MySql e ricontrollato varie volte il Setup del form. Il tutto è un clone della tua guida, ma mi da il solito errore e non registra i dati.
Da cosa può dipendere?
Grazie in anticipo
0 # MICHELE Del Principe 2019-01-15 18:12
Salve,
è possibile fare la stessa cosa usando Fabrik? (creare un utente joomla da un form Fabrik?)
Mi potresti aiutare?
Grazie
0 # giusebos 2019-01-15 18:51
Citazione MICHELE Del Principe:
Salve,
è possibile fare la stessa cosa usando Fabrik? (creare un utente joomla da un form Fabrik?)
Mi potresti aiutare?
Grazie

Si è possibile utilizzando questo plug in

http://fabrikar.com/forums/index.php?wiki/joomla-user-form-plugin/

Per pubblicare un commento devi registrarti