Pré-remplir le formulaire d'enregistrement avec l'entité Profil

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous !

Je viens vers vous aujourd'hui parce qu'il y a un point sur lequel je butte, et c'est apparemment trop pointu pour la communauté d'où je viens.

Dans le cadre d'un formulaire d'enregistrement sur un site Drupal 7, avec des champs supplémentaires gérés par le module Profile 2, j'essaie de pré-populer certains de ces champs à partir d'un autre module. D'après ce que j'ai saisi, je devrais pouvoir enregistrer des valeurs dans l'entité et ainsi avoir les champs correspondants remplis.
Mais, malgré divers essais et la lecture de ceci, je n'arrive pas à remplir mes champs.

Je suis sûr que mon implémentation de hook_form_user_register_alter() est la dernière à être appelée (ou du moins que l'appel vient après celui de profile2_form_user_register_alter()), et si je vérifie mon formulaire avant de l'afficher, les données semblent s'y trouver, mais il faut croire qu'elles ne sont pas à la bonne place. J'ai aussi vérifié les noms des champs.

Est-ce que quelqu'un a déjà eu ce genre de souci ?

Merci d'avance :)

<?php
function mytheme_form_user_register_form_alter(&$form, &$form_state) {
  if (!empty(
$_SESSION['oneall_social_login_session_open']) && !empty($_SESSION['oneall_social_login_social_data'])) {
   
$social_data = @unserialize($_SESSION['oneall_social_login_social_data']);

   
$firstName = '';
   
$lastName = '';

    if (!empty(
$social_data['response']['request']['status']['code'])
      &&
$social_data['response']['request']['status']['code'] == 200
   
) {
     
$user_data = $social_data['response']['result']['data']['user'];

     
$firstName = mytheme_first_name_from_social($user_data);
     
$lastName = mytheme_last_name_from_social($user_data);
    }
   
// Retrieving the Profile entity containing data
   
$entity = &$form['profile_main']['#entity'];

   
$entity->field_nom[LANGUAGE_NONE][0]['value'] = $firstName;
   
$entity->field_prenom[LANGUAGE_NONE][0]['value'] = $lastName;
   
// Ensuring the user name contains no space but dots instead
   
$form['account']['name']['#default_value'] = str_replace(
     
' ',
     
'.',
     
$form['account']['name']['#default_value']
    );
  }
}
?>
Version de Drupal :