Рейтинг:0

конкретный обработчик отправки в пользовательскую форму

флаг us

У меня есть обработчик отправки в пользовательскую форму. Он перенаправляет пользователя на определенную страницу.

используйте Symfony\Component\HttpFoundation\RedirectResponse как RedirectResponse;

/**
 * @файл
 * Крючки основного модуля для модуля EHESS Propositions 3.
 *
 * @DCG
 * Этот файл больше не требуется в Drupal 8.
 * @см. https://www.drupal.org/node/2217931
 */
функция ehess_propositions_3_form_alter(&$form, &$form_state, $form_id) {
  если ($form_id == 'user_form') {
    foreach (array_keys($form['actions']) как $action) {
      if (isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
        $form['actions'][$action]['#submit'][] = '_ehess_propositions_3_user_profile_submit';
      }
    }
  }
}

функция _ehess_propositions_3_user_profile_submit($form, &$form_state) {
  $response = новый RedirectResponse('/admin/content/reglement/');
  $ответ->отправить();
}

Но проблема в том, что обработчик отправки запускается как для обновления пользователя, так и для удаления пользователя. Это блокирует перенаправление на страницу «подтвердить удаление» пользователя.

Есть ли конкретное действие для обновления только пользовательской формы, а не для удаления пользователя?

4uk4 avatar
флаг cn
Вы прикрепляете обработчик отправки ко всем кнопкам отправки, включая кнопку отмены. Кстати, не отправляйте ответ, добавьте его в $form_state. См. https://drupal.stackexchange.com/questions/5861/how-to-redirect-to-a-page-after-submitting-a-form
Frédéric Hébert avatar
флаг us
Но в примере ничего не различает между обновлением пользователя и удалением пользователя. Это был мой вопрос, к какому действию прикреплен обработчик? Есть ли действие «отправить обновление», например?
Рейтинг:0
флаг cn

$действие может быть представить и удалять. Вам не нужен цикл foreach, если вы не хотите прикреплять обработчик отправки ко всем кнопкам отправки.

Добавьте обработчик непосредственно к кнопке сохранения:

функция ehess_propositions_3_form_alter(&$form, &$form_state, $form_id) {
  если ($form_id == 'user_form') {
    $form['actions']['submit']['#submit'][] = '_ehess_propositions_3_user_profile_submit';
  }
}

Для правильного способа перенаправления в форме см. https://drupal.stackexchange.com/a/191594/47547

Frédéric Hébert avatar
флаг us
действительно спасибо. Теперь это очевидно!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.