2010-03-05 4 views
3

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

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

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

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

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

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

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

Не ответ на ваш вопрос, но знаете ли вы, что «noemail.com» - это существующий домен, который будет получать почту, отправляемую на ваши «случайные» адреса электронной почты? Вы должны использовать домен, которому вы владеете для этого, или, по крайней мере, официально зарезервированный «example.com», чтобы предотвратить отправку писем невольным участникам! –

ответ

4

Вы используете 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», или еще лучше, тот, который у вас есть!

Смежные вопросы