Как изменить форму входа с помощью hook_form_alter ()?

Я пытаюсь изменить форму входа с помощью следующего кода:

function git_form_alter(&$form, $form_state, $form_id) {
  $forms = array(
    'user_login_block' => 'user-login-form',
    'user_login' => 'user-login'
  );
  if (array_key_exists($form_id, $forms)) {
       //my altering code
    }
}

Я получил это из модуля openidselector, который вводит некоторые виджеты JavaScript и более или менее то, что я пытаюсь сделать.
Когда я перехожу к mysite /user /login, он не вызывает блок, где мне нужно изменить форму. Он просто не вызывает hook_form_alter().

Другое дело - в форме регистра или любой другой форме, вызывающей крючок.

Может ли кто-нибудь сказать мне, что я могу сделать? Как возможно, что openidselector использует тот же метод, но в этом модуле работает код, в то время как он не работает в моем коде?

6 голосов | спросил PartySoft 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 15:54:56 +0400 2011, 15:54:56

2 ответа


5
  

Когда я перехожу к mysite /user /login, он не вызывает блок, где мне нужно изменить форму. Он просто не вызывает hook_form_alter ().

example.com/user/login не показывает блок входа пользователя; он показывает форму входа. Ваш код должен работать, даже если я предпочел бы сделать код более простым (если вы не используете «user-login-form» каким-либо образом).

function git_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'user_login_block' || $form_id == 'user_login') {
    // …
  }
}

Что касается причины, по которой код не работает, я могу подумать о следующих причинах:

  • Имя крючка не соответствует сокращенному имени, используемому для модуля; например, короткое имя модуля «git_form», и вы используете git_form_alter() для реализации hook_form_alter(), когда он должен быть git_form_form_alter().
  • Вы редактируете модуль, который включен. В этом случае, когда вы добавляете новый код в код, вам также необходимо очистить кеш, используемый Drupal, поскольку Drupal кэширует список перехватов, реализованных сторонними модулями.
  • Модуль не включен.
ответил kiamlaluno 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 16:31:03 +0400 2011, 16:31:03
0

Ваш код в порядке, и он работает нормально. По крайней мере, эта часть, которую вы показали.

Я предполагаю, что вы поместили его в модуль 'git', и модуль включен? У вас есть какой-либо код (там или в любом другом месте), который может сломать поток и остановить выполнение вашего крюка?

ответил Maciej Zgadzaj 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 16:10:01 +0400 2011, 16:10:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132