2010-05-04 2 views
0

나는 사용자가 "Phone No"텍스트를 "Mobile No"텍스트 필드에 입력 한 것처럼 유효성 검사를 추가하려고하는 모듈을 만들었습니다.
사용자가 사용자 등록 양식을 열었을 때 실행됩니다. 모듈 이름이 form_intro입니다사용자 등록 양식 확인?

<?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')); 
    } 
} 
?> 

내가 이것을 만들었
.... .....
PLZ를 확인하고 나에게 재생을 보내 ...
이가 ... 작동하지 않습니다 사용자가 문자를 입력 할 때 오류가 발생하지 않습니다.

답변

1

요소 당 유효성 검증 처리기를 전달하려면 #element_validate을 사용하고 유효성 검사기를 양식에 추가하려면 $form['#validate']을 사용해야합니다. 그것이 작동하지 않는 이유입니다.

편집 :
당신을 위해 작동하지 않는 또 다른 이유, 당신이 잘못 후크를 구현한다는 것입니다. 후크 hook_form_FORM_ID_alter의 경우 hook을 모듈 이름으로 바꾸고 FROM_ID을 양식 id로 바꿔야합니다.

예 : my_module_element_validation_handlertitle 양식 항목 요구 하겠지만

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 전체 형태를 요구한다.

+0

미안하지만 난 .... 유를하지 않았다 당신은 수 plz 일부 자세히 설명 할 수 있습니다. . 나는이 일에 화를 낼 것입니다 .... 당신이 함수 이름을 바꾸라고 제안하고 있습니까? – Nitz

+1

drupal에 오신 것을 환영합니다. #Nitz. 왜 책 한두 권을 사지 그래? –

+0

BOOK MAESTRO ....에게 어떤 말도하고 싶지 않습니다. Col. Shrapnel ..... 감사합니다. 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; 

    } 
} 


가 작동 .....