簡體   English   中英

在用戶注冊表格上驗證?

[英]Validation on user registration form?

我已經在模塊中嘗試添加驗證,例如用戶是否在“電話號碼”文本中輸入了字符,並在“手機號碼”中輸入了相同的字符。
當用戶打開用戶注冊表格時,它將運行。
我做的...

<?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 .....
請檢查並發送給我重播...
這是行不通的...當用戶輸入字符時,它沒有給出任何錯誤。

您需要使用#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 ,而將為title表單項調用my_module_element_validation_handler

我曾嘗試過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;

  }
}

這正在工作.....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM