Я вызвал пользовательскую функцию в форме отправки регистрации пользователя 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 из пользовательского модуля.
Благодаря
Ваш ответ кажется верным, но есть ли вариант, что я могу использовать в том же коде. Я имею в виду, что в регистрационной форме есть и другие исправления, поэтому я избегаю любого добавленного модуля. –
Если вы видите первую строку, я устанавливаю атрибут #required в значение False. Это должно сработать? Просто спрашиваю. –
#quired будет проигнорирован, см .: https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_account_form_validate/7. Если вы все еще хотите проигнорировать эту проверку, просто отключите эту функцию от проверки и добавьте упрощенную функцию на основе user_account_form_validate. – hugronaphor