Хукинг регистрации пользователей в Drupal - PullRequest
3 голосов
/ 05 марта 2010

У меня есть сайт, где некоторые пользователи будут зарегистрированы нашими сотрудниками, и с ними не будут связаны электронные письма. Я хотел бы оставить поле электронной почты обязательным для заполнения, поэтому я разработал генератор случайной электронной почты.

 function generateRandomEmail() {
     $email = 'noemail'. rand(0,1000000) . '@noemail.com';
     return $email;
  }

Итак, я прикрепил это к форме регистрации пользователя alter, и она отлично работала, эффективно создав электронное письмо для этих пользователей.

Однако при этом все остальные поля, связанные с основным разделом учетной записи (пароль, имя пользователя, уведомление и т. Д.), Исчезли. Мой вопрос, есть ли быстрый способ заполнить остальные поля, которые я не хочу изменять? Я использовал drupal_render ($ form); в tpl.php, но он не работал в форме изменить.

Вот где я изменяю форму:

  function accountselect_user($op, &$edit, &$account, $category) {
    if ($op == 'register') {

       $fields['account']['mail'] = array(
       '#type' => 'textfield',
       '#default_value' => generateRandomEmail(),
    );

1 Ответ

4 голосов
/ 05 марта 2010

В настоящее время вы используете hook_user для манипуляции, но это не то место. В $ op 'registration' вы можете вернуть дополнительные поля , которые вы хотите добавить в процесс регистрации, но не можете изменять существующие поля. Для этого используйте hook_form_alter() или hook_form_FORM_ID_alter(), например ::

function yourModule_form_user_register_alter(&$form, &$form_state) {
  $form['account']['mail']['#default_value'] = generateRandomEmail();
}

Возможно, вы захотите добавить проверку того, что запрос на самом деле исходит от персонала, поскольку приведенный выше код также заполняет поле электронной почты для обычной регистрационной формы!


Также, пожалуйста, не генерируйте «случайные» почтовые адреса, используя существующие сторонние домены (например, «nomail.com»). Используйте зарезервированный «example.com», или, что еще лучше, тот, которым вы владеете сами!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...