web-dev-qa-db-fra.com

Quelle est la meilleure approche pour mettre à jour les informations utilisateur dans la table d'informations utilisateur des composants personnalisés?

J'ai développé un composant personnalisé qui stocke certaines informations utilisateur dans des tables séparées. Je souhaite stocker/mettre à jour les informations utilisateur lorsque l'utilisateur est supprimé ou mis à jour à partir de la section admin ou du frontal.

3
lokeshpahal

Vous devriez sauvegarder vos données en utilisant un plugin utilisateur - ils sont très faciles à écrire. Vous trouverez un exemple à l'adresse Création d'un plugin de profil , bien que cet exemple puisse en contenir plus que nécessaire.

Les événements dans lesquels votre code entrerait sont onUserAfterSave et onUserAfterDelete et sont documentés à l'emplacement Plugin/Events/User . Ces événements se déclenchent lorsqu'un utilisateur est enregistré ou supprimé dans l'admin ou le front-end.

Les entrailles du plugin serait la suivante:

defined('_JEXEC') or die;
class PlgUserMyPlugin extends JPlugin
{
    protected $app;
    protected $db;

    public function onUserAfterDelete($user, $success, $msg) {
        if (!$success) 
            return false;

        $query = $this->db->getQuery(true)
        ->delete($this->db->quoteName('#__mytable'))
        ->where($this->db->quoteName('userid') . ' = ' . (int) $user['id']);
        $this->db->setQuery($query)->execute();
        return true;
    }

    public function onUserAfterSave($user, $isnew, $success, $msg) {
        if (!$success) 
            return false;

        // Update your table here
        if ($isnew) {
            // New User
        }else{
            // Existing User
        }
    }
}
6
GDP