web-dev-qa-db-ja.com

記事の上書きから連絡先の詳細を取得する

記事の上書きで連絡先の連絡先情報を表示する必要があります(住所、電話番号...)。
$user = JFactory::getUser();でユーザーを取得できますが、ユーザーの連絡先の詳細を取得するにはどうすればよいですか?

私はこれを使ってみました:

JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_contact/tables');
$contact = JTable::getInstance('contact_details');    

echo '<pre>'; print_r($contact); echo '</pre>';

ただし、何も出力されません。

3
web-tiki

まず、次のようにユーザーIDを取得する必要があります。

$id = JFactory::getUser()->id;

次に、プロファイルデータの配列を次のように取得します。

$profile = JUserHelper::getProfile($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();

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'];
}
3
Lodder
$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 */
}
1
Michael