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

Joomla: registrazione, campi personalizzati e modifica dei campi personalizzati da parte del titolare dell'account

Nel precedente articolo "Registrazione utenti con campi supplementari" abbiamo visto come si realizza un form di registrazione per Joomla, completo di campi aggiuntivi per far inserire all'utente informazioni aggiuntive.

In questa guida vedremo come poter far modificare le informazioni agli utenti dopo aver effettuato il login.

Chronoform editare form, vediamo la logica di funzionamento:

Il form precedentemente realizzato è particolarmente utile per la raccolta di dati che normalmente la maschera di registrazione di joomla non permette, abbiamo faticato tanto per crerare un form completo ma vorremmo anche che l'utente possa editare queste informazioni, quindi per fare ciò ci costruiremo un form accessibile solo dopo il login, magari attraverso una voce di menù visibile ed accessibile solo al gruppo di utenti desiderato.

Per la realizzazione di questo form sono 3 le informazioni importanti da sapere; la prima è che abbiamo bisogno di una piccola porzione di codice PHP che in parole povere dica al sistema "Ti faccio vedere la schermata di modifica appartente all'utente loggato solo quando è loggato". Questo ci garantirà di non far modificare dati appartenenti ad altri utenti. La seconda cosa da sapere è che per far scrivere la modifica nel record giusto, il sistema deve conoscere questa informazione, altrimenti al momento del salvataggio non faremo altro che creare un nuovo record.

Quello che ho appena scritto potrebbe suonarvi come scontato, ma ho voluto sottolineare queste 2 informazioni perchè esistono decine e decine di post su i vari forum con l'interrogativo: "Non riesco a leggere le informazioni dopo ilo login" oppure "salvando la modifica si duplica il record".

La terza cosa da sapere è che in questa guida realizzeremo tutto ciò che occorre alla modifica dei soli campi personalizzati, lasceremo invece alla normale gestione di Joomla la modifica dei dati prettamente legati al nome, user, password ed email.

Costruiamo la nostra schermata di modifica con chronoforms V5

Molto del lavoro per costruire questa schermata di fatto è una ripetizione della realizzazione del form "Registrazione utenti con campi supplementari", quindi visto che abbiamo un form realizzato che è molto simile a quello che ci servirà per la modifica dei campi personalizzati, non faremo altro che duplicare il form inserendo un flag nella riga del form "registrazione_completa" e premendo sull'icona in alto "COPY".

Una volta copiato il form, entrateci per modificarlo, e la prima operazione che farete sarà quella di modificare il suo nome e le informazioni. Ho chiamato questo form "modifica_registrazione_completa_login".

Portatevi adesso nella zona "DESIGN" ed eliminate gli elementi:

  • name
  • username
  • email
  • password
  • confirm password

Editate il pulsante inserendo "Modifica" in Value/label. Inserite adesso 2 "text box" che posizionerete in alto prima di Ragione Sociale. le informazioni all'interno del primo "text box" saranno:

  • Field Name: cf_id
  • Field ID: cf_id
  • Label: cf_id
  • Extra params: readonly=readonly

mentre per il secondo "text box" saranno:

  • Field Name: user_id
  • Field ID: user_id
  • Label: user_id
  • Extra params: readonly=readonly

Questi due campi sono determinanti (insieme ad altre istruzioni nella zona "SETUP") per fare in modo che l'utente loggato veda solo la sua "scheda" e che al momento di salvare non venga duplicato il record.

I campi cf_id e user_id sono rispettivamente la chiave primaria della tabella dove vengono scritti i dati supplementari, e la chiave secondaria che abbina il record all'utente che lo ha generato, ovvero chi si è registrato.

In questa guida ho preferito visualizzare le informazioni di questi 2 campi inserendo il parametro readonly (per evitare modifiche), tutto ciò a solo scopo didattico, nella realtà avremmo potuto usare dei campi nascosti inserendo 2 elementi "Hidden Field" ed usando gli stessi nomi per Field name e Field ID, così non si sarebbero visualizzati i 2 campi come nell'immagine sottostante.

 chronoforms editare form

Portiamoci adesso nella zona "SETUP" ed eliminiamo tutti i vecchi elementi, per questo form di modifica costruiremo una gerarchia di elementi come l'immagine sottostante:

 chronoforms editare form elementi zona setup

Quindi avremo nella zona "On load", un elemento "Authenticator" impostato sul gruppo di persone che possono accedere al form: registered e super user saranno su Allowed.

Dentro "On success" dell'elemento "Authenticator" inseriremo un "DB read" e un elemento "HTML (render form)", così se siamo loggati e facciamo parte del gruppo impostato su "Authenticator", il "DB read" leggerà le informazioni dal database e successivamente le stamperà a video. Come sempre fare la massima attenzione alla gerarchia, se i due elementi fossero inseriti al contrario il meccanismo non funzionerebbe!

Impostiamo adesso le informazioni sul "DB read"

  • Action label: legge la tabella
  • enable: YES
  • Table name: registrazione_completa (ricordo che questa tabella è stata costruita seguendo questa guida "Registrazione utenti con campi supplementari"
  • Multi read: NO
  • Enabled Model ID: NO
  • Model ID: lasciare vuoto
  • Fields: cf_id,user_id,ragione_sociale,indirizzo,cap,citta,provincia,codice_fiscale  (questa è la lista dei nomi dei campi separati da una virgola che dovranno essere visualizzati e modificati. Nel caso di cf_id e user_id la modifica viene "neutralizzata" dal Extra params: readonly=readonly)
  • Order: lasciare vuoto
  • Group: lasciare vuoto
  • Conditions: inserite il codice sottostante
    <?php 
    $user = JFactory::getUser();
    return array('user_id' => $user->id);
     ?>

Non l'ho ancora scritto, ma voi salvate ogni tanto ;-)

Dopo aver configurato il "DB read" inserite l'elemento "HTML (render form)" e successivamente nella zona "On fail" dell'elemnto "Authenticator" inserite un messaggio tipo: "Attenzione, non siete loggato oppure non avete le credenziali per accedere in questa area". Questo messaggio sarà visualizzabile, come immaginerete, a tutti quei soggetti che non hanno credenziali e che non appartengono al gruppo da voi designato.

Inseriamo adesso nella zona On submit un elemento "DB Save" che servirà a scrivere le informazioni che abbiamo editato dopo aver premuto il pulsante "Modifica" ed editiamone le impostazioni:

  •  Action label: Scrive la tabella dopo la modifica (questo è una semplice etichetta che ci aiuterà a capire cosa fa questo elemento, potete scrivere quello che volete)
  • Enabled: YES
  • Table name: registrazione_completa, la stessa tabella che viene lette all'inizio della "gerarchia".
  • Save Under Model ID: NO
  • Multi save: NO
  • Model ID: Data
  • Foce Save: NO
  • Update conditions: lasciare vuoto

 Infine inseriamo un elemento "Display message" con un messaggio tipo: "Record modificato con successo"

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 # alboroma 2016-04-12 16:08
Istruzioni eccellenti sono riuscito facilmente a creare un form di prenotazione con i campi utente precompilati.
0 # giusebos 2016-04-12 17:15
Ottimo, sono contento di aver contribuito alla risoluzione di una tua problematica
0 # condorex 2017-05-31 11:20
Ciao
grande lavoro grazie.
Vorrei sapere se in questa struttura è possibile inserire
Invisible reCAPTCHA
perchè non ho trovato modo di farlo attraverso
Chronoform
Grazie mille.
0 # giusebos 2017-05-31 11:28
penso di si, alla stessa maniera come si inserisce il no captcha...almeno credo
0 # mattiaa 2017-08-21 18:28
Non riesco a far leggere il database, già l'id non me lo prende. Sapete come aiutarmi? hos eguito alla perfeione tutto
0 # cornelio 2017-12-28 10:16
Ciao giusebos,
ti faccio i miei complimenti per il lavoro prezioso che offri sul sito.

Grazie molte
Cornelio

Per pubblicare un commento devi registrarti