CI 묻고 답하기

제목 자식창에서 부모창전달 스크립문제
글쓴이 ANS 작성시각 2012/11/12 11:53:59
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 23525   RSS

# test1.php
--------------------------
<a href='#' onclick="window.open('test2.php','popup','width=450, height=550');">팝업폼</a>
<input type=text name="text1">

 


# test2.php
--------------------------
<script>
function submitToParent(){
opener.document.all.text1.value = document.all.text2.value;
self.close();
}
</script>

<input type=text name=text2>
<input type=button value="submit" onClick="submitToParent()">

 

 


=========================================================================

위와같이 팝업창에서 부모창으로 값을 보내면서 창을 닫는 단순한 기능의 스크립입니다. 파일 두개 만들어서 실행하면 문제가 없습니다.
그런데 CI쪽에서 구현하면 화면은 올바르게 뜨지만 값이 부모창으로 넘어가지도 않고 self.close(); 함수가 있음에도 닫히지 않습니다.
즉 script가 전혀 반응하지 않습니다.
 

CI 구조는

-- controllers (blog.php) --

$this->load->view('test1.php');

function pop_up(){
 require_once('./application/views/member/test2.php')
}

 


-- views (test1.php) --

<a href='#' onclick="window.open('/blog/pop_up','popup','width=450, height=550');">팝업폼</a>

<input type=text name="text1">



 

 다음글 쿼리스트링 설정 (5)
 이전글 routes!! 질문 드립니다. (1)

댓글

헛발이 / 2012/11/12 12:42:27 / 추천 0
팝업이라고 해서 특별히 달라지는건 없습니다..

예를 들면 <a href="/blog">test</a> 라고 하면 어디를 가르키는 걸까요?

당연히 application/blog.php 콘트롤러의 index() 함수를 찾아서
index()에서 $this->load->view('list_form'); 이라고 했따면 최종적으로
list_form.php의 결과물이 화면에 보여지겠죠..

그러니 그 흐름이 팝업으로 한다고 달라지는건 없답니다..

즉 <a href='#' onclick="window.open('/blog/pop_up','popup','width=450, height=550');">팝업폼</a>
이라고 했다면 팝업이 열리면서 당연히 이렇게 됩니다.

application > blog.php 파일에서 pop_up() 함수를 찾아 pop_up()에서 설정된
view 화면에 바로 팝업에서 보여지게 되겟죠..


전체적인 모양을 보면요..

application
    controllers
        blog.php
            /*
                blog.php엔 이렇게 들어있겠죠..
                index() {
                    $this->load->view('main_form');
                }
                pop_up() {
                    $this->load->view('popup_form');
                }
            */
    views
        main_form.php
        popup_form.php

이렇게 되어 있는거죠??

그러면 main_form.php에는 아마도 팝업을 띄우는 스크립트가 있겠죠? 이렇게요~
<a href='#' onclick="window.open('/blog/pop_up','popup','width=450, height=550');">팝업폼</a>
<input type=text name="text1">

그다음엔 popup_form.php 에는  아마도 이렇게 있을것이구요~
<script>
function submitToParent(){
opener.document.all.text1.value = document.all.text2.value;
self.close();
}
</script>
<input type=text name=text2>
<input type=button value="submit" onClick="submitToParent()">

require_once 는 전혀 필요 없으니 다시 한번 흐름을 잘 파악해 보시기 바랍니다.

ANS / 2012/11/12 13:55:38 / 추천 0
일단 친절한 답변감사합니다..

require_once 를 쓴 이유는 application 밖에 있다보니 load->view()를 쓸 수 없었던 거구요.(외부연동)
ci쪽이 아닌 php쪽으로 본다면 프로그램 전개에 전혀 문제될 상황이 아니기에 좀 의아해서 질문해 본겁니다..
일단 veiws 쪽으로 파일을 옮긴후 load->view()로 다시 호출해 봐야겠네요..

그게 문제라면 다행이겠지만.... ㅜㅜ;
헛발이 / 2012/11/12 14:03:57 / 추천 0
아 그렇군요~ 별거 아니겠죠... 금방 찾으실수 있으실거에요~~
파이팅!!
ANS / 2012/11/12 17:59:24 / 추천 0
개발 베이스가 파폭이다 보니 익스와 크롬은 이상이 없었네요.. 그냥 파폭은 포기.. ㅡㅡ;