Submitted by Ymox on
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']
);
}
}
?>