Сайт на Drupal 8. У меня есть форма для редактирования пользователя (по url: user / {user} / edit), я добавил туда два флажка, первый флажок - это роль водителя, а второй - роль пассажира (например).
Я хочу, чтобы это происходило, когда пользователь выбирает, например, первый флажок и нажимает кнопку «Сохранить». Его профиль должен быть обновлен, а выбранная ранее роль должна быть добавлена. А роль второго - уйти на пенсию (если бы была).
Я думал, что мы сможем это сделать, если вы назначите роль обработчика отправки на основе установленного флажка.
но я не умею правильно писать код






Не совсем понимаете, чего хотите, но в
hook_form_alter()
вот код
/**
* Implements hook_form_alter().
*/
function MODULENAME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
switch ($form_id){
case 'user_profile_form':
$form['#submit'][] = 'user_update_func';
break;
}
}
/**
* submit callback fuction.
*/
function user_update_func($form, \Drupal\Core\Form\FormStateInterface $form_state) {
$currentUser = \Drupal::currentUser();
$currentUser->addRole('new_selected_role');
$currentUser->removeRole('old_selected_role');
$currentUser->save();
}
Надеюсь, это поможет тебе
БЛАГОДАРНОСТЬ
Я обновляю ответ примером обновления роли пользователя
Да, я добавил чекбоксы с помощью функции изменения формы крючка. Но я не знаю, как добавить роль пользователю! Роль выбирается на основе флажка, установленного пользователем.