CI 묻고 답하기

제목 폼체크후 맞는값을 DB에 콜백방식으로 넣기
글쓴이 나이유미 작성시각 2010/11/19 07:57:32
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 21890   RSS

http://www.codeigniter-kr.org/user_guide/libraries/form_validation.html#callbacks
의 예제를 연습해보고 있는 초보 입니다.


form_validation.php에 검증 규칙을 만들었구요
$config = array(
 'signup' => array(
     array(
       'field' => 'username',
       'label' => 'Username',
       'rules' => 'trim|required|min_length[5]|max_length[12]|xss_clean'
       ),
     array(
       'field' => 'password',
       'label' => 'Password',
       'rules' => 'trim|required|matches[passconf]|md5'
       ),
     array(
       'field' => 'passconf',
       'label' => 'Password Confirmation',
       'rules' => 'trim|required'
       ),
     array(
       'field' => 'email',
       'label' => 'Email',
       'rules' => 'trim|required|valid_email'
       )
     )

);
와 같습니다.

 class Form extends Controller {
 
 function index()
 {
  $this->load->helper(array('form', 'url'));
  
  $this->load->library('form_validation');
  //$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
  //일단 주석 처리 해놓은 상태 입니다.
  $this->form_validation->set_error_delimiters('<div class="error" style="border:1px solid red;">', '</div>');


  if ($this->form_validation->run('signup') == FALSE) {
     $this->load->view('myform');
  } else {
     $this->load->view('formsuccess');
  }
 }
 
 function username_check($str) {
  if ($str == 'test') {
   $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
   return FALSE;
  } else {
   return TRUE;
  }
 }
}

저 상황에서 모든 폼검증(모든값이 올바름)에 성공했을때 db에 데이터를 넣고 싶습니다.
그런데 페이지를 리다이렉션 시키지 않고 콜백 형태로 넣고 싶은데 어떻게 처리를 해야 할지 모르겠습니다.
else 부분에 넣어두면 될거같은데 하나의 함수로 빼고 싶어서요^^;;
 //$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
이코드를 username대신에 formname을 넣어서 할 수 있을까요....

감사합니다.
 

 다음글 웅파님~ CKeditor 사용시 문제요.??? (1)
 이전글 json으로 컨트롤러 받아오기?? (3)

댓글

변종원(웅파) / 2010/11/19 11:01:08 / 추천 0
if ($this->form_validation->run('signup') == FALSE) {
     $this->load->view('myform');
  } else {
     $this->load->view('formsuccess');
  }
 }
소스중 위의 부분이 원하시는 작업을 처리하는 곳입니다.

signup에 해당하는 폼검증이 전부 true일 경우 formsuccess 뷰를 보여주는 것인데
뷰 윗쪽에 post로 넘어온 데이터를 db에 insert하는 모델을 만들어서 삽입하면 됩니다.

그리고 아이디체크 같은 부분은 폼검증 이용하지 마시고 ajax로 처리하기기 바랍니다.
가입페이지에서 아이디 입력시 keyup으로 체크해서 ajax로 처리하면 편합니다.
그후 폼검증에서는 콜백함수를 이용하지 않고 단순히 입력됐는지, 영문인지 정도만
체크하는 것이 낫습니다.
나이유미 / 2010/11/21 13:54:04 / 추천 0

감사합니다...