Я создал модуль, в котором я пытаюсь добавить подтверждение, например, если пользователь ввел символы в тексте «Телефон Нет» и тот же на «Мобильном Нет».
Это будет работать, когда пользователь открыл регистрационную форму пользователя.
Я сделал это ….
<?php function form_intro_form_alter($form_id,&$form){ if($form_id == 'user_register' || $form_id == 'user_edit'){ $form['Personal Information']['profile_pno']['#validate'] = array('form_intro_pno_validate' => array()); //profile_pno is for Phone No. $form['Personal Information']['profile_mno']['#validate'] = array('form_intro_mno_validate' => array()); //profile_mno is for Mobile No. } } function form_intro_pno_validate($element){ if(!is_numeric($element['#value'])){ form_set_error('profile_pno' , t('Please Enter Only Number in Phone no')); } } function form_intro_mno_validate($element){ if(!is_numeric($element['#value'])){ form_set_error('profile_mno' , t('Please Enter Only Number in Mobile no')); } } ?>
имя модуля – form_intro …..
PLZ проверить его и отправить мне повтор …
это не работает … это не дает никаких ошибок, когда пользователь вводил символы.
Вам нужно использовать #element_validate
для передачи обработчику проверки на элемент или $form['#validate']
чтобы добавить обработчик проверки в форму. Вот почему он не работает.
РЕДАКТИРОВАТЬ:
Другая причина, по которой это не работает для вас, заключается в том, что вы неправильно использовали крючок. Для hook hook_form_FORM_ID_alter
вы должны заменить hook
своим именем модуля и FROM_ID
с идентификатором формы.
Пример:
function my_module_form_intro_form_alter(&$form, &$form_state) { $form['#validate'][] = 'my_module_form_validation_handler'; $form['title'] = array( '#type' => 'textfield', '#title' => t('Title'), '#description' => t('The title you enter here appears on the page.'), '#size' => 40, '#maxlength' => 255, `#element_validate` => array('my_module_element_validation_handler'), ); }
Выполняя это, функция my_module_form_validation_handler
будет вызвана для всей формы, а my_module_element_validation_handler
будет вызван для элемента формы title
.
Я пробовал с hook_user ..
<?php function legalagree_user($op, &$edit, &$user, $category = NULL) { switch($op) { case 'validate': if (!is_numeric($edit['profile_mno'])) { form_set_error('profile_mno', t('You have to enter only numbers in Mobile No Field.')); } return; } }
Это работает …..