CI 묻고 답하기

제목 이런 경우 폼검증 실패시 팝업창을 띄우는 funfion으로 데이터를 보내야 하는데 어떻게 보내야하죠?
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2016/09/12 13:18:44
댓글 : 14 추천 : 0 스크랩 : 0 조회수 : 16447   RSS

등록이라는 버튼을 클릭하면

 

jquery를 통해 

var gg_pk = $('button[name="svad_bt"]').val()
		var popUrl ="http://localhost/jds/index.php/gigwan_c/sv_md_popup/?data="+gg_pk;
		var popoption = "width=1200, height=800, resizable=no, scrollbars=no, status=no;";

 

컨트롤러의 sv_md_pup으로 데이터를 보냅니다.

 

function sv_md_popup(){
			
			$sv_pk =  $this->input->get('data', true);

			$data['info']  = $this->Gigwan_m->server_info2($sv_pk);

			$this->load->view('gigwan/sv_md_v', $data);
			
		}

sv_md_popup에서 팝업창을띄우고

 

해당 팝업창에 데이터를 입력한후 데이터를 등록하면

컨트롤러의  reqregit()에서 폼검증을 합니다.


function rqregit(){//예산확보청구 등록
		
				if($this->form_validation->run('rqregit') ==false){
				
					$this->sv_md_popup();

				}else{
					
					$rq_pr = $this->input->post('rq_pr', true);

					$rq_pr = $this->Replace($rq_pr);


					$date['rq_year'] = $this->input->post('rq_year', true);

					$date['rq_date'] = $this->input->post('rq_date', true);
					 
					$date['rq_pr'] = $rq_pr;

					$date['gg_pk'] = $this->input->post('gg_pk', true);
					
					$date['rq_pg_pr'] = $this->input->post('rq_pg_pr', true);

					$date['rq_team'] = $this->input->post('rq_team', true);

					$date['rq_name'] = $this->input->post('rq_name', true);

 

이렇게 폼검증을 하는데 if문에서 false가 뜰 경우 다시

sv_md_popup()으로 돌아가야하는데 

sv_md_popup()은 데이터를 get형태로 받아서 DB의 내용을 가져와

화면에 출력을 해줘야 하는데 

function rqregit()에서는 폼검증 실패 후 get방식으로 데이터를 보내줄수가 없습니다;

현재 이러한 흐름으로 등록 수정 을 작성 하고 있습니다.

if문에서 false가 발생하여 다시

sv_md_popup()으로 되돌아 갈때 get으로 전송하는 데이터가 없어서 

에러가 발생합니다 ;

popup창을 띄우는 function의 경우 

fucntion xxx(데이터){

}

이러한 형태가 아니기에

 

$this->xxx(데이터)

방식을 사용할수가 없네요 ㅜㅜㅜ

 

이럴땐 어떻게 폼검증 해야되죠?

 다음글 안녕하세요 서브쿼리 관련해서 질문이 있습니다ㅠ (1)
 이전글 CI 세션객체에 대한 의문사항 입니다. (1)

댓글

배강민 / 2016/09/12 15:35:25 / 추천 0

죄송하지만, 전, 상황이 이해가 안되네요.

이해되시는 분께 토스합니당~

정수리 / 2016/09/12 15:41:02 / 추천 0

@배강민;;

그런가요;;

제가 설명을 잘못한것 같네요;; 죄송합니다;;

어디부분에서 이해가 안가지는지좀 알려주실수 있을지..

배강민 / 2016/09/12 15:50:37 / 추천 0
#01. jQuery 에서 gg_pk 는 어떤 값이 있는건지?
#02. jQuery 에서 값을 보내는 method 는 sv_ad_popup 인데, 바로 아래 받는 controller는 sv_md_popup 이고?
#03. 위는 오타라고 친다해도, sv_md_popup method는 data라는 파라메터를 받아서 뭔가 DB에서 정보를 가져오는것 같고, 그를 sv_md_v 라는 뷰에 뿌리기만 하는데 이를 설명하신 이유가 뭔지?
#04. popup을 띄우는 평선을 popup을 띄운다? gg_pk 그 구분인건지?
#05. 이 이후는 통째로 이해가 안되서 어디가 이해안되는건지라고 말씀을 못드리겠네요.
뫄뫄잉뿌 / 2016/09/12 15:51:32 / 추천 0

설명 잘 모르겠는데... 좀 이해한게 폼검증 후 sv_md_popup()으로 다시 돌아간다는건 한번 폼검증 false나면 루프 돌지 않나요..?

차라리 sv_md_popup()에서 폼검증 펑션인 reqregit()를 호출해서 리턴값으로 받는게 나을거같은데요. 굳이 되돌아간다라기 보다는 폼검증함수 호출로 하는게 어떨런지욥

정수리 / 2016/09/12 16:05:54 / 추천 0

@배강민 @뫄뫄잉뿌

아그렇군요..

제가 너무 유도리 없게 올렸내요

function A(){

$변수 =  $this->post->get('xxx');

$this->xxx_m->xxx($변수);

}

function B(){

  if($this->form_validation->run() == false){

      $this->A();

   }

}

그냥 이렇게 핵심만 올리면 보시는분들이 편하실것 같네요 ㅜㅜ;;

저렇게 바로위의 코드처럼 되어있을때 

false가 발생하면 function A를 호출하게되는데 

A에서는 데이터를 $this->input->get('xxx') input을 통해 데이터를 받고있습니다,

A를 호출하려면  false 이후  $this->A(); 여기에서 데이터를 get방식으로 보내줘야 하는데 어떤방식으로 해야 get방식으로 보내줄수 있을까요 라는 질문이에요 ㅜㅜ 제가 너무 빙빙돌려서 말했네요;;

kaido / 2016/09/12 16:08:50 / 추천 0
function A($변수){

$this->xxx_m->xxx($변수);

}

function B(){
$변수 =  $this->post->get('xxx');

  if($this->form_validation->run() == false){

      $this->A($변수);

   }

}

 

정수리 / 2016/09/12 16:35:01 / 추천 0
function A(){
 
$변수 =  $this->post->get('xxx');
$date = $this->xxx_m->xxx($변수);
this->load->view('xxxx', $date);
}
 
function B(){
 
  if($this->form_validation->run() == false){
 
      $this->A();-->여기서 A()호출할때 데이터를 보내는 방법이 있을지 ㅜㅜ
 
   }
 
}

function A의 경우 다른 뷰페이지에서 get로 데이터를 받아와 DB에서 내용을 가져온후 그 데이터를 1뷰페이지에 뿌려줍니다.(수정페이지)

그리고 그1뷰페이지에서 작성 후 수정을 하면 form_validation을 통해 검증을 하는데 틀리면 다시 A()호출하게되는데

A()호출시 get로 보낸 데이터가 필요합니다 데이터를 보내지않으면 에러가 발생하게 됩니다 ㅜㅜ

$this->A(변수) 형태가 아닌 get방식으로 보내야 하는데 어떻게 보내야할지 모르겠네요

 

뫄뫄잉뿌 / 2016/09/12 16:41:28 / 추천 0

혹시 A펑션을 왜 다시 호출하는지 알 수 있을까요? 단순히 뷰페이지를 띄우려는 목적인가요?

왜 굳이 get방식으로 보내야되는지에 대한 이유를 알아야할거같아요

kaido / 2016/09/12 16:44:18 / 추천 0

굳이 한다면 

$this->A();

대신에

$data['data'] = $변수;
$this->load->view('get_post_v',$data);

보내주고 
view 에서

var data = "<? echo $data; ?>";
$( "#result" ).load( "/controller_name/A?변수=" +data);



 

이런 방법도 있긴 합니다만. 이 이상은 혼자서 연구 하셔야 할 것입니다.

딱히 큰 이유가 있지 않는 이상 이런 방법으로 만드는 사람은 거의 없거든요.

정수리 / 2016/09/12 16:55:48 / 추천 0

@뫄뫄이뿡

false났을 경우 다시 뷰페이지로 돌아가 어느부분이 오류인지 알려줘야 하지 않나요?

그목적으로 부르는건데;; 잘못 이해한건가요?

kaido / 2016/09/12 17:01:49 / 추천 0

@정수리

흠....

일단 이렇게 해결 하려면 어떡해야 하냐? 가 아니라 어떻게 해결하면 좋을까? 부터 다시 고민 하셔야 할 걸로 보입니다.

 

form_validation 하고 ajax return 시키는 정책이 지금 혼돈이 오고 계신 겁니다.

누누이 말씀드리는건데, ajax는 비동기일뿐이지 전혀 특별한 것이 아닙니다.

 

동기화로 해당 기능들을 구현 하시면 ajax로 바로 치환해서 구현 가능 합니다.

우선 거기부터 시작 해야 할것 같습니다.

한번에 2개를 하려고 하니 2개가 섞여서 판단 되고 있는 것입니다.

 

form_validation 으로 하고 싶은 표현을 먼저 완성 하고 나서 ajax를 붙여보시면 생각이상으로 간단하게 해결 하는 방법이 떠오르실 겁니다.

뫄뫄잉뿌 / 2016/09/12 17:04:57 / 추천 0

아... 그런이유라면 

function sv_md_popup(){
             
            $sv_pk =  $this->input->get('data', true);
 
            $data['info']  = $this->Gigwan_m->server_info2($sv_pk);

          if($this->input->server('REQUEST_METHOD') == 'GET'){
                   
			if($this->form_validation->run('rqregit') == true){
                                폼검증 true 후 처리할 내역
                        }
                  
         }
 
            $this->load->view('gigwan/sv_md_v', $data);
             
 }

 

이런식이면 바로 뷰에서 나타내질텐데.. 뷰에서 노출코드를 적었으면요... 굉장히 빙빙돌아 질문하셨네요...ㅠㅠ

정수리 / 2016/09/12 17:33:09 / 추천 0

@kaido

말씀하시는거에 전적으로 동의합니다...

회사프로젝트를 혼자 진행하다보니 ㅜㅜ 빨리 만들어야겠다는 생각밖에없고

프로젝트에 대한 압박감때문에 혼란이 계속 오네요 ㅜㅜ

말씀하신 것 처럼 천천히 기능을 구현해봐야겠습니다.

정수리 / 2016/09/12 17:33:48 / 추천 0

@뫄뫄잉뿌

감사합니다 ㅜㅜ

제가 워낙 글솜씨가 없다보니 쉽게설명할수 있는것도 어렵게 말하는 재주??라고 해야되나 

죄송합니다...