Je dois simplement mettre à jour certains champs utilisateur à partir d'un formulaire de module personnalisé.
J'essaye mais ça ne marche pas:
/**
* Submit the register form
*
* @param array $form
* @param FormStateInterface $form_state
* @return array|RedirectResponse
*/
public function submitForm(array &$form, FormStateInterface $form_state)
{
// Create a new user
$values = $form_state->getValues();
// User from Drupal\user\Entity\User;
$user = $this->ctrUserManager->getCurrentUser();
if($user){
$user->set('mail', $values['mail']);
$user->set('field_last_name', $values['field_lastname']);
$user->set('field_first_name', $values['field_first_name']);
$user->set('field_civility', [$values['field_civility']]);
$violations = $user->validate();
if (count($violations) === 0) {
$user->save();
\drupal_set_message('Your profile has been updated');
return $form;
}
}
\drupal_set_message('Error during user profile update', 'error');
return $form;
}
vous n'enregistrez pas correctement l'utilisateur, vous devez appeler:
$user->save();
Voici un exemple de modification du nom d'utilisateur:
$user->setUsername('new-username');
$user->save();
Voici un autre exemple pour ajouter un rôle à un utilisateur:
$user->addRole('administrator');
$user->save();
Pouvez-vous essayer ce qui suit:
/**
* Submit the register form
*
* @param array $form
* @param FormStateInterface $form_state
* @return array|RedirectResponse
*/
public function submitForm(array &$form, FormStateInterface $form_state)
{
// Create a new user
$values = $form_state->getValues();
// User from Drupal\user\Entity\User;
$user = $this->ctrUserManager->getCurrentUser();
if($user){
$user->set('mail', $values['mail']);
$user->set('field_last_name', $values['field_lastname']);
$user->set('field_first_name', $values['field_first_name']);
$user->set('field_civility', [$values['field_civility']]);
$violations = $user->validate();
if (count($violations) === 0) {
$user->save();
drupal_set_message('Your profile has been updated');
} else {
drupal_set_message('Error during user profile update', 'error');
}
}
}
D'accord ! J'arrive à résoudre mes problèmes, dans ma buildForm j'utilisais #value au lieu de #default_value!