2017-07-20 3 views
1

Dans joomla 3, vous pouvez ajouter des champs personnalisés. Ils sont enregistrés dans la base de données joomla mysql sous "_fields".Accéder aux champs personnalisés dans joomla 3

J'ai créé un nouveau champ personnalisé appelé "région". Les utilisateurs peuvent ajouter une valeur dans leurs paramètres de profil. Donc, ma question est maintenant, comment puis-je appeler la valeur des utilisateurs de ce domaine personnalisé via PHP?

Je sais comment appeler les utilisateurs profil valeurs par exemple:

jimport('joomla.user.helper'); 
$user = JFactory::getUser(); 
$userId = $user->id; 
$userProfile = JUserHelper::getProfile($userId); 
$usercity = $userProfile->profile['city']; 

Alors, comment puis-je appeler les _field valeurs?

+0

Avez-vous essayé un print_r (userProfile $); Ensuite, vous pouvez voir clairement tous les champs qui s'y trouvent. – Oluwaseye

+0

Oui, seuls les paramètres de profil sont disponibles. Les valeurs du champ personnalisé ne sont pas à l'intérieur. – Robster

Répondre

2

Lorsque vous ajoutez le champ personnalisé dans la zone d'administration (champs utilisateur) Vous pouvez consulter le profil complet de l'utilisateur dans la page de profil par défaut

http://localhost/joomla/index.php?option=com_users&view=profile 

Voici une capture d'écran enter image description here

inspecter ensuite la la mise en oeuvre. Je suis tombé sur l'accès de cette façon.

$customFields = FieldsHelper::getFields('com_users.user', JFactory::getUser(), true); 
// In my case there where only one additional field, so a took the 0-indexed value, you shall see in which index is the field you are searching for 
$customFields[0]->value; 

Vous pouvez également essayer

print_r($customFields); 

Juste pour voir ce qui est en elle.

Juste pour vous que vous puissiez y accéder.

enter image description here

Hope this helps.

+0

Merci. Cela fonctionne parfaitement. – Robster

+0

Vous êtes les bienvenus. – Oluwaseye

0

Si vous ajoutez un nouveau champ personnalisé à partir du panneau d'administration, le nombre d'objets dans le tableau $ customFields changera. Et vous aurez accès à d'autres domaines. Vous devriez accéder au champ par son nom. Vous devriez ajouter la fonction pour trouver le champ personnalisé par son nom.

$customFields = FieldsHelper::getFields('com_users.user', JFactory::getUser(), true); 

public static function getValueByFieldName($fields, $field_name) { 
    foreach ($fields as $field) { 
     if ($field->name == $field_name){ 
      return $field->value; 
      break; 
     } 
    } 
}