Login Form

QR Code of :

Latest users

  • admin
  • recaetano
  • MaimiSwillowl
  • alikon
  • pippo

my knowledge is knowing not to know

Verificare la disponibilità del nome utente

Nei form di registrazione dei siti più importanti, come Google ad esempio, quando digitate il nome utente viene immediatamente scatenata la verifica che il nome utente scelto sia disponibile, vediamo come è possibile utilizzare la stessa tecnica sul nostro form di registrazione basato su Joomla. Utilizzeremo la tecnologia AJAX che grazie al framework Mootools è integrato di default in Joomla. Vedremo come implementare il controllo della disponibilità del nome utente senza modificare il codice core di Joomla. Per questo abbiamo bisogno di creare un componente che risponderà alle chiamate AJAX e di fare l'override del layout del form di registrazione per innescare la richiesta. Nel nostro componente nel controller realizziamo la funzione chkUsername() che controllerà l'esistenza del nome utente digitato nel form e ci ritornerà l'esito

function chkUsername() {
$formfrom=JRequest::getVar( 'from', '', 'get', 'cmd' );
if( $username = JRequest::getVar( 'username', '', 'get', 'cmd' ) ) {
   $db =& JFactory::getDBO();
 //Verifica l'estistenza del nome utente sul DB
   $query = 'SELECT id  FROM #__users'
  . ' WHERE username = '.$db->Quote( $username );
  $db->setQuery( $query );
  $result=$db->loadObject();
  if ($result) {
  // Se esiste ritorna un messaggio appropriato.
     $response['html'] = '
'.$username.' '. JText::_( 'USERNAME_ALREADY_IN_USE' ).'

';
     $response['msg'] = 'false';
  } else {
  // non esiste nome utente disponibile
     $response['html'] = '
'.JText::_( 'USERNAME_AVAIBLE' ).'

';
     $response['msg'] = 'true';		       		    
  }
} else {
  // se qualcosa è andato storto ritorna comunque un messaggio di errore
  $response['html'] = '
'.JText::_( 'No name entered' ).'

';
  $response['msg'] = 'false';
}
echo (json_encode( $response )) ;
// Ritorna il controlla all'applicazione
return true;
}

Vediamo ora come codificare lo scatenarsi della richiesta di verifica, per far ciò ci avvarremo della cosidetta tecnica del "Layout override", in cosa consiste, anche se può sembrare complicato è molto semplice si tratta di utilizzare un layout diverso da quello standard di joomla, più precisamente faremo l'override del layout del form di registrazione via template. Supponendo che il nostro template di default sia beez_20, ma lo stesso ragionamento vale per qualsiasi template, andiamo nella cartella html del nostro template e creiamo la cartella com_users al suo interno la cartella registration, qui metteremo il nostro "layout override" il file default.php che vediamo nel dettaglio: inseriamo il javascript per la chiamata ajax alla nostra funzione chkUsername

window.addEvent("domready",function(){
var box = $('namechkregister');
var cun = document.id('jform_username');
$(cun).addEvent("blur",function(){   
    if ( $(comusername).value.length > 0 ){
        var url="?option=com_aa4j&format=raw&task=chkUsername&username="+$(cun).value;
        box.style.display="block";
    	box.set('html','Check in progress...');
        var a=new Request.JSON({
            url:url,
            onComplete: function(response){         
                if (response.msg==='false'){
                 $(cun).value='';
                 $(cun).focus();                
                }else{                	
                 var el = $(box);
                 (function(){
                   el.fade('out').get('tween');
                   el.destroy();
                 }).delay(1500);   								
                }
                box.set('html',response.html);                                   
            }
        });
        a.get();
      }
    });
});	

come visto nel codice javascript allo scatenarsi dell'evento on blur sul nostro campo username viene chiamata in modo asincrono (ajax) la nostra funzione di verifica chkUsername, infine ci serve una piccola modifica all' html per visualizzare la risposta

if($field->name=='jform[username]'){
   echo '';
}		

Quest'articolo è stato pubblicato originariamente sul Joomla! Community Magazine

Comments (0)

500 characters remaining

Cancel or