간만에 올려봅니다.^^
1. 메뉴얼 : http://codeigniter-kr.org/user_guide/libraries/form_validation.html#callbacks
2. 사용목적 : 폼검증을 이용하여 체크표시 할때 폼체크와 디비처리 체크를 한곳에 표기하기 위한 목적
3. 사용예제 : 메뉴얼의 경우 한 컨트롤러에서 사용하지만 아래 코드는 폼검증, 에러 표시방법을 공용화 해서 사용
###### 컨트롤러 부분 #######
## 쓰기 메소드
function write_method()
{
// 폼검증
$this->_set_validation('write');
// 본문정의
if ($this->form_validation->run() == FALSE)
{
$this->load->view('write');
}
else
{
$data = array(
'id' => $this->input->post('id'),
'title' => $this->input->post('title'),
'memo' => $this->input->post('memo')
);
//INSERT 처리
$this->db->insert('board', $data);
// 완료처리
$this->load->view('lists');
}
}
## 콜백 메소드 : 아이디 체크
function id_check($id)
{
$mem_query = $this->db->query("select * from member where id='$id'");
$mem_data = $mem_query>row_array();
if($mem_data['id']) {
$this->form_validation->set_message('id_check', ' <b>!</b> '.$id.'는 이미 사용 중입니다.');
return FALSE;
} else {
return TRUE;
}
}
★ 아주중요!! set_message 에 id_check는 메소드와 동일해야 합니다.
## 폼검증 메소드
function _set_validation($type)
{
//에러문구 관련 정의
$this->common->set_validateion();
if($type == "code_w") // 쓰기정의 (계정코드)
{
$config = array(
array('field'=>'id', 'label'=>'아이디를', 'rules'=>'required|callback_id_check'),
array('field'=>'title', 'label'=>'제목을', 'rules'=>'required'),
array('field'=>'memo', 'label'=>'내용을', 'rules'=>'required')
);
}
$this->form_validation->set_rules($config);
}
###### 공용 정의 부분 : 라이브러리 예 #######
## 공용 라이브러리 : 에러문구 정의
function set_validateion()
{
$CI =& get_instance();
$CI->load->library('form_validation');
//에러문구 관련 정의
$CI->form_validation->set_error_delimiters('<font color=red>', '</font><br>');
$CI->form_validation->set_message('required', ' <b>!</b> %s 입력 해주세요.');
$CI->form_validation->set_message('alpha_dash', '<b>!</b> 알파벳,숫자,_,- 만 사용 가능합니다.');
$CI->form_validation->set_message('min_length', '<b>!</b> 길이는 4~12자리 이내만 가능합니다.');
$CI->form_validation->set_message('max_length', '<b>!</b> 길이는 4~12자리 이내만 가능합니다.');
$CI->form_validation->set_message('numeric', '<b>!</b> 숫자만 입력 해주세요.');
$CI->form_validation->set_message('valid_email', '<b>!</b> 이메일 형식이 올바르지 않습니다.');
}
|