2014-09-16 4 views
0

Я вызвал пользовательскую функцию в форме отправки регистрации пользователя Drupal.Пользовательский обратный вызов user_register_form Drupal 7

Ниже перечислены функции, которые я реализованы

/** 
* Implements hook_form_alter() 
*/ 
function voen_registration_form_alter(&$form, &$form_state, $form_id) { 
    //dpm($form); 
    switch($form_id){ 
    case 'user_register_form': 
     $form['account']['name']['#required'] = FALSE; 
     $form['account']['name']['#type'] = 'hidden'; 
     array_unshift($form['#submit'],'voen_generate_username'); 
     print_r($form); 
     break; 
    }  
} 

function voen_generate_username(&$form, &$form_state){ 
    //drupal_set_message('Function Running'); 
    die('Wokring'); 
} 

Теперь, когда форма была отправлена ​​я print_r в $ форму и отправить ключ я получаю следующий результат, который является тем, что я ожидал

[#submit] => Array 
     (
      [0] => voen_generate_username 
      [1] => user_register_submit 
     ) 

Но я не знаю, почему моя пользовательская функция не выполняется. Я попытался с die() также se drupal_set_message(), а также попытался print_r() в пользовательской функции, но не ответил. Он по-прежнему дает мне ошибку «Пожалуйста, введите имя пользователя», которая начинается с функции user_register_submit из пользовательского модуля.

Благодаря

ответ

1

Передать функция не выполняется, поскольку функция проверки не передается. Посмотрите на $form['#validate'], есть функция «user_account_form_validate», которая не пройдет, если вы не определите хотя бы значение по умолчанию для поля имени.

Во всяком случае, если вы пытаетесь разрешить регистрацию только по электронной почте, посмотрите на этот модуль: https://www.drupal.org/project/email_registration

+0

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

+0

Если вы видите первую строку, я устанавливаю атрибут #required в значение False. Это должно сработать? Просто спрашиваю. –

+0

#quired будет проигнорирован, см .: https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_account_form_validate/7. Если вы все еще хотите проигнорировать эту проверку, просто отключите эту функцию от проверки и добавьте упрощенную функцию на основе user_account_form_validate. – hugronaphor

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