Je dois afficher les informations de contact d'un contact sur une substitution d'article (adresse, numéro de téléphone, etc.).
Je peux obtenir l'utilisateur avec: $user = JFactory::getUser();
mais comment puis-je obtenir les coordonnées d'un utilisateur?
J'ai essayé d'utiliser ceci:
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_contact/tables');
$contact = JTable::getInstance('contact_details');
echo '<pre>'; print_r($contact); echo '</pre>';
Mais cela ne produit rien.
Vous devrez d’abord récupérer l’ID utilisateur de la manière suivante:
$id = JFactory::getUser()->id;
Ensuite, obtenez le tableau de données de profil, comme suit:
$profile = JUserHelper::getProfile($id)->profile;
Vous pouvez maintenant accéder à toutes les données:
echo $profile['address1'];
echo $profile['address2'];
echo $profile['city'];
echo $profile['region'];
echo $profile['country'];
echo $profile['postal_code'];
echo $profile['phone'];
echo $profile['website'];
echo $profile['favoritebook'];
echo $profile['aboutme'];
echo $profile['dob'];
Vous devez vous assurer que vous êtes connecté, sinon vous ne pourrez pas obtenir les informations:
Voici le code complet avec un contrôle d'intégrité:
$user = JFactory::getUser();
if (!$user->guest)
{
$profile = JUserHelper::getProfile($user->id)->profile;
echo $profile['address1'];
echo $profile['address2'];
echo $profile['city'];
echo $profile['region'];
echo $profile['country'];
echo $profile['postal_code'];
echo $profile['phone'];
echo $profile['website'];
echo $profile['favoritebook'];
echo $profile['aboutme'];
echo $profile['dob'];
}
$user = JFactory::getUser();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*')->from('#__contact_details')->where('user_id = '.(int)$user->id);
$db->setQuery($query);
$contacts = $db->loadObjectList();
/* one user can be associated with multiple contacts */
if($contacts) {
/* do stuff with the contact records */
}