joomla: registrazione utente con campi 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.

Joomla 3: registrazione utenti con campi per informazioni supplementari

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è