J'ai ajouté le code suivant dans onUserBeforeSave du plugin de profil utilisateur (plugins/user/profile/profile.php):
if ($isnew)
{
if (!strcasecmp($data['role'], 'group0'))
{
$data['groups'] = array(10);
}
elseif (!strcasecmp($data['role'], 'group1'))
{
$data['groups'] = array(11);
}
JFactory::getApplication()->enqueueMessage(print_r($user, true));
JFactory::getApplication()->enqueueMessage(print_r($data, true));
}
Les résultats de print_r indiquent que les données $ ont été modifiées avec succès, mais que le nouvel utilisateur ajouté à la base de données est toujours dans l'ancien groupe, à savoir "Enregistré".
Je ne sais pas quelle est la raison de cela. Et comment puis-je obtenir des groupes d’utilisateurs par défaut. Merci!
Vous ne pouvez pas modifier les données utilisateur dans les événements onUserBeforeSave
et onUserAfterSave
. Ceci est juste une copie de ce qui sera/a été sauvegardé. Il serait préférable de:
onUserAfterSave
événement$user = JFactory::getUser($user_id)
où $user_id
est l'identifiant d'un utilisateur à modifier$user->groups = Array($new_user_group)
$user->save()