CI 묻고 답하기

제목 form_validate 2버전과 3버전 다른 동작이 발생합니다.
글쓴이 작성시각 2016/02/01 09:53:00
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 18090   RSS

ci2 -> ci3

코드 리펙토링 중에

system/libraries/form_validate.php set_rules 메소드중

// No reason to set rules if we have no POST data
		if (count($_POST) == 0)
		{
			return $this;
		}

 

위 구문이 빠져서 ajax 폼과 검증이 분리되지 않은 로직에서 validation_errors() 가 생성되서 이전버전과 다른 결과가 나옵니다.

그리고 다음 줄에 아래와 같은 주석이 달려있어서 번역기를 돌려보면 '우리가 어떤 POST 데이터가없는 경우 이유는 규칙을 설정할 수 없습니다' 와 같은데, 대체 위 구문이 빠졌는지 이해할 수 없어서 질문올리게 되었습니다.

 

// No reason to set rules if we have no POST data
		// or a validation array has not been specified
		if ($this->CI->input->method() !== 'post' && empty($this->validation_data))
		{
			return $this;
		}

 

제가 모르는 별다른 문제가 없다면 라이브러리 확장해서 변경하고 싶은데 변경해도 될가요?

 다음글 안녕하세요. 코드이그나이터를 처음 접하는 사람입니다.ㅜ... (3)
 이전글 라이브러리 개념과 배열에 관해 몇가지 질문.. 부탁드립... (2)

댓글

변종원(웅파) / 2016/02/01 10:01:39 / 추천 0

ajax를 get으로 호출하시는건 아닐테구요.

post로 호출하면 아무 문제 없을 건데요? 데이터 안넘어가면 폼검증에서 에러를 리턴할거구요. ^^

 

ci3 change log나 버그리포트를 보면 답이 있을겁니다. 

/ 2016/02/01 10:26:21 / 추천 0

@웅파

답변 감사합니다.

change log에 왜 바꼈는지 있네요.. 

제 경우, 폼과 폼검증 부분을 분리하지 않은 코딩한 경우에 문제가 되서요 ㅠㅠ

//폼검증.
if ($this->form_validation->run() == FALSE) {
 ...
 if( validation_errors() ){
  json_alert( array( 'stat' => 0, 'msg' => strip_tags(validation_errors()) ) );
 } else {
  json_alert( array( 'stat' => 1, 'returnHtml' => $returnHtml ) );
 }
} else {
 ...
}

 

번역해보면,

고정 버그 (# 501) - : 문서는`폼 검증 도서관 <라이브러리 / form_validation>`방법 set_rules은 () 수 ($ _ POST) 대신에 실제로 중단 요청 방법 'POST'전에 경우 검사에 의존.

 

음.....

/ 2016/02/01 10:29:51 / 추천 0
/ 2016/02/01 10:31:42 / 추천 0

일단 ci 따라가는걸로 해야겠어요 근대 께름치 않은 이 느낌 !;;

/ 2016/02/01 10:56:57 / 추천 0

@ 히힛 !

if (validation_errors() && count($_POST) > 0) {
   ...
} else {
   ...
}

요렇게 하면 라이브러리 확장 안해도 될듯해요...!