Come eseguire codice personalizzato sulla registrazione utente
Domanda
Ho bisogno di fare una richiesta di riposo ogni volta che un nuovo utente si inscrive.
La richiesta REST restituisce alcuni dati che ho bisogno di memorizzare per l'account utente Drupal, ed essere in grado di presentare come da qualche parte il contenuto.
Qual è il miglior / modo più pulito per farlo?
Soluzione
E 'possibile farlo in un semplice modulo personalizzato , essere sicuri di prima capire Drupal ganci sistema come questo è la base per (quasi) tutto Drupal
. Nel modulo, è possibile implementare hook_user_presave()
di essere chiamato prima di un account utente viene salvato. Si chiamerà sia per la creazione e l'aggiornamento, quindi sarà necessario per proteggere il codice con una condizione per rilevare nuovo utente. Dopo la chiamata REST, c'è parecchio possibilità di memorizzare i dati restituiti. Quella più semplice è l'usare l'attributo di dati dell'account utente. Si tratta di un semplice array PHP che verrà serializzato in un colonne di database. E non è molto buona performande saggio e non molto flessibile (è possibile interrogare i dati memorizzati), ma è facile.
function MODULE_user_presave(&$edit, $account, $category) {
// Accoding to user_save's documentation, this is a new user if
// $account->is_new is set to TRUE or if $account->uid is not set
if ($category == 'account' && (!empty($account->is_new) || !isset($account->uid)))) {
$edit['data']['MODULE'] = MODULE_get_data_from_rest($account);
}
}
Altri suggerimenti
Una caratteristica di base in Drupal 7 è disponibile in grado di attivare un'azione specifica, se si crea un utente, ecc Non c'è bisogno di codice per ottenere questo:
- Attiva il modulo Trigger
- Seleziona Configurazione >> Azioni e creare un'azione disponibile nell'elenco a discesa
- Seleziona Struttura >> Trigger , fai clic sulla utente e assegnare l'azione si è creato un po 'indietro a trigger: dopo aver creato un nuovo account utente
Regole o moduli del flusso di lavoro può essere quello che stai cercando.