验证用户登记表?(Validation on user registration form?)

2019-10-21 11:34发布

我曾在我试图添加验证一样,如果用户已经在申请和相同的“手机号码”,“联系电话”文本输入的字符模块。
这将在用户打开了用户注册表单运行。
我做了这个....

<?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检查,并给我重播...
这是不工作...它不给任何错误,当用户已经输入的字符。

Answer 1:

您需要使用#element_validate通过对每个元素或验证处理$form['#validate']到验证处理程序添加到窗体。 这就是为什么它不工作。

编辑:
另一个原因是它不为你工作,是你实现挂钩错误。 对于挂钩hook_form_FORM_ID_alter ,您需要更换hook与模块的名称和FROM_ID与形式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形式的项目。



Answer 2:

我曾试图与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;

  }
}

这是工作.....



文章来源: Validation on user registration form?