2010-05-04 99 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; 

    } 
} 

這是工作.....