Проверка по форме регистрации пользователя? - PullRequest
0 голосов
/ 04 мая 2010

Я создал модуль, в котором я пытаюсь добавить проверку, как если бы пользователь ввел символы в текстовом поле «Номер телефона» и то же в «Мобильном №». Это запустится, когда пользователь откроет форму регистрации пользователя.
Я сделал это ....

<?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 .....
Пожалуйста, проверьте это и пришлите мне реплей ...
это не работает ... не выдает никакой ошибки, когда пользователь вводит символы.

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Вам необходимо использовать #element_validate для передачи обработчика проверки для каждого элемента или $form['#validate'] для добавления обработчика проверки в форму. Вот почему это не работает.

EDIT:
Другая причина, почему это не работает для вас, заключается в том, что вы неправильно реализовали хук. Для ловушки 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.

0 голосов
/ 05 мая 2010

Я пытался с 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;

  }
}

Это работает .....

...