Добавить роль пользователя на странице редактирования пользователя Drupal 8

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

Я хочу, чтобы это происходило, когда пользователь выбирает, например, первый флажок и нажимает кнопку «Сохранить». Его профиль должен быть обновлен, а выбранная ранее роль должна быть добавлена. А роль второго - уйти на пенсию (если бы была).

Я думал, что мы сможем это сделать, если вы назначите роль обработчика отправки на основе установленного флажка.

но я не умею правильно писать код

введите описание изображения здесь

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
321
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не совсем понимаете, чего хотите, но в

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();
}

Надеюсь, это поможет тебе

БЛАГОДАРНОСТЬ

Да, я добавил чекбоксы с помощью функции изменения формы крючка. Но я не знаю, как добавить роль пользователю! Роль выбирается на основе флажка, установленного пользователем.

Alex Sorokin 30.05.2018 14:01

Я обновляю ответ примером обновления роли пользователя

code.rider 30.05.2018 14:27

Другие вопросы по теме