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.
Joomla: registrazione, campi personalizzati e modifica dei campi personalizzati da parte del titolare dell'account
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
- 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.
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:
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.