2012-04-05 3 views
0

없이 폼 데이터의 유효성을 검사하는 방법은 : callback__validate_high :CodeIgniter의 내 설정 파일에 다음과 같은 배열을 가지고 콜백

$config['reg_datas'] = array(
    'high' => array(
     7 => 200, 
     30 => 500 
    ), 
    'box' => array(
     7 => 125, 
     30 => 350 
    ), 
    'shots' => array(
     7 => 25, 
     30 => 50 
    ) 
); 

그래서, CI의 설명서를 참조하여,이 유효성 검사 규칙을 사용하여 내 양식 데이터를 검증하고있다. .. 그리고이 콜백 함수를 사용해야합니다 :

public function _validate_high($input) 
{ 
    $cfg = $this->config->item('reg_datas'); 
    if (!array_key_exists($cfg['high'], $input) 
    { 
     $this->form_validation->set_message('_validate_high', 'Invalid High Field...'); 
     return FALSE; 
    } 

    return TRUE; 
} 

질문입니다; 내가 확인해야 할 때마다 새로운 콜백을 만들어야 만합니까? array_key_exists? 위의 코드는 (하나의 배열에 대한) 하나의 유효성 검사 규칙 일 뿐이지 만, 내 설정 파일에는 3 개의 배열이 있습니다. (아마도 곧 더있을 것입니다) - 그래서 간단한 체크를 위해 3 콜백 함수를 생성해야합니다.

CodeIgniter는 내가 배우는 첫 번째 프레임 워크이며, 가능한 한 가장 좋은 방법을 배우고 싶습니다. 그리고 나는 단지 내 시간을 낭비하고 싶지 않기 때문에 그런 것에 관심이 있습니다.

답변

1

먼저 array_key_exists()에 대한 구문이 잘못되었습니다. 키는 첫 번째 특성이며 두 번째 배열입니다. 마찬가지로 : array_key_exists($input, $cfg['high']);.

유효성 검사를 위해 키를 하나씩 확인하는 대신 공통된 기능을 사용하십시오. 또한 설정 파일에 오류 코드를 넣으십시오. 이 단지 예를 들어 있음을

$config['reg_datas_error'] = array(
    'high' => 'Invalid High Field', 
    'box' => 'Invalid box Field', 
    'shots' => 'Invalid Shots Field' 
); 

그리고 일반적인 검증 기능

public function _validate_field($input, $key) 
{ 
    $cfg = $this->config->item('reg_datas'); 
    $cfg_error = $this->config->item('reg_datas_error'); 
    if (!array_key_exists($input, $cfg[$key]) 
    { 
     $this->form_validation->set_message('_validate_'.$key, $cfg_error[$key]); 
     return FALSE; 
    } 

    return TRUE; 
} 

주, 당신은 개선하거나 다른 방법을한다. 그냥 기본 논리 일반적인 유효성 검사를 수행하는 방법

+0

아, 콜백 함수에서 둘 이상의 매개 변수를 사용할 수 있다는 것을 알지 못했습니다! 감사! – Cyclone

관련 문제