2010-05-04 42 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 .....
PLZ检查,并给我重播...
这是不工作吧...当用户输入字符时不会发生任何错误。

回答

1

您需要使用#element_validate传递每个元素的验证处理程序或$form['#validate']以向表单添加验证处理程序。这就是为什么它不起作用。

编辑:
另一个原因是它不为你工作,是你实现挂钩错误。对于钩子hook_form_FORM_ID_alter,您需要用您的模块名称替换hook,用表格ID替换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

抱歉,但我没有得到ü....你能PLZ在一些细节解释。我对这件事情很生气....你是在暗示我改变函数名称还是什么? – Nitz 2010-05-04 13:06:37

+1

欢迎来到drupal,#尼茨。你为什么不给自己买一两本书? – 2010-05-04 13:31:24

+0

不想说任何事情,以预订MAESTRO ....上校。弹片.....感谢googletorp ...为了回答.....我知道了.... – Nitz 2010-05-04 14:16:30

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; 

    } 
} 

这是工作.....