2010-05-04 6 views
0

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

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

ответ

1

Вам необходимо использовать #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

извините, но я не получил U .... может вы плз объяснить в некоторых деталях. Я сойду с ума от этой вещи ... вы предлагаете мне изменить имя функции или что? – Nitz

+1

добро пожаловать в drupal, #Nitz. Почему бы тебе не купить себе книгу или две? –

+0

не хотят ничего говорить КНИГАМ МАСТРО .... Кол. Шрапнель ..... спасибо googletorp ... за ответ ..... я получил это .... – Nitz

0

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

    } 
} 

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

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

  • Нет связанных вопросов^_^