web-dev-qa-db-fra.com

Mise à jour du profil utilisateur

Quel est le code pour mettre à jour un profil d'utilisateur?

Cela donne le profil de l'utilisateur:

   $user = JFactory::getUser();
   $userid = $user->id;
   $profile = JUserHelper::getProfile($user->id);
   echo print_r($profile);

Maintenant, qu'est-ce que je tape pour mettre à jour l'un des champs de profil s'il vous plaît? Est-ce à moi de l'écrire ou existe-t-il une commande pour enregistrer le profil?

Merci,

Tapis

3
Mat Kay

Vous pouvez modifier ce code de Joomla Docs à vos besoins, en fonction de vos objectifs:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
    $db->quoteName('profile_value') . ' = ' . $db->quote('Updating custom message for user 1001.'),
    $db->quoteName('ordering') . ' = 2'
);
// Conditions for which records should be updated.
$conditions = array(
    $db->quoteName('user_id') . ' = 42', 
    $db->quoteName('profile_key') . ' = ' . $db->quote('custom.message')
);
$query->update($db->quoteName('#__user_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->query();
6
Bogowoe

C’est ce que font les plugins de profil d’utilisateur Joomla

// Sanitize the date
$data['profile']['dob'] = $this->_date;

$db = JFactory::getDbo();
$query = $db->getQuery(true)
                ->delete($db->quoteName('#__user_profiles'))
                ->where($db->quoteName('user_id') . ' = ' . (int) $userId)
                ->where($db->quoteName('profile_key') . ' LIKE ' . $db->quote('profile.%'));
$db->setQuery($query);
$db->execute();

$tuples = array();
$order = 1;
foreach ($data['profile'] as $k => $v)
{
    $tuples[] = '(' . $userId . ', ' . $db->quote('profile.' . $k) . ', ' . $db->quote(json_encode($v)) . ', ' . $order++ . ')';
}

$db->setQuery('INSERT INTO #__user_profiles VALUES ' . implode(', ', $tuples));
$db->execute();

Vous pouvez obtenir une référence de Root => plugins => utilisateur => profil => profile.php dans la fonction onUserAfterSave.

6
Gaurav