제목 | 함수호출에 대한 기본적인 사항 질문 드립니다. | ||
---|---|---|---|
글쓴이 | StaG | 작성시각 | 2014/07/08 23:44:00 |
|
|||
오늘 처음 CI를 입문했습니다. 메뉴얼도 보고 여기 질답 게시판도 참고해가면서 기존 웹사이트를 CI에 맞게 변경하고 있습니다. 그러던 도중 도저히 풀리지 않는 문제가 있어서 질문 드립니다. 일단 기본 설정값들부터 설명드리면... http://www.cikorea.net/lecture/view/213/page/1/q/indexsubject http://www.cikorea.net/tip/view/1312/page/1/q/indexsubject 위의 두 글을 참고하여 index.php를 주소에서 없앴습니다. config/config.php 파일에서... $config['base_url'] = 'http://192.168.56.102/web/';이렇게 CI의 루트경로를 지정했습니다.. (application, system,index.php 파일등이 있는....) autoload.php에서... $autoload['helper'] = array('url','file','html');헬퍼를 지정해주었으며... routes.php에는.. $route['default_controller'] = "abc";abc.php라는 default_controller가 있습니다. 이 abc.php 컨트롤러는.. load->view('index',$data); } } ?> 이렇게 index 함수만이 존재합니다. 이 index함수는 views폴더 안에 있는 index.php 뷰를 호출합니다.(CI루트의 index.php와는 다릅니다.) views/index.php의 내용은 아래와 같습니다. <load->view('header'); ?> //Some code here... load->view('footer); ?> 긴 내용을 간략하게 줄였습니다... 모든 페이지마다 공통적으로 들어갈 메뉴를 header.php에 넣었고... 페이지 제일 아래 참고 링크등을 보여질 footer.php... 그리고 그 사이에 해당 페이지에 대한 구현 내용이 들어가 있습니다. 문제가 되는 header.php의 내용은 다음과 같습니다. class Menu extends CI_Controller { function home() { $this->load->view('index'); } } ?> <div> <?=anchor('header/menu/home',img('img/logo.png'))?> </div> 이렇게 코딩되어 있습니다. 하고자하는것은 logo 이미지를 누르면 index.php가 불리도록 하는 것입니다. 이렇게 한 후 브라우저로 실행해서 로고 이미지에 마우스를 오버하면... http://192.168.56.102/web/header/menu/home 이런 주소를 볼 수 있습니다. 그리고 로고 이미지를 클릭하면... Not Found Apache/2.2.22 (Ubuntu) Server at 192.168.56.102 Port 80 이렇게 에러메세지가 노출됩니다. 상황을 이해하시는데 조금이라도 도움을 드리기 위해 최대한 자세히 서술했습니다. 어떻게 하면 이 문제를 해결할 수 있을까요. 아무리 찾아보고 소스를 이리저리 고쳐봐도 해결방도가 보이지 않네요.. 답변 부탁드립니다. ㅠㅠ |
|||
다음글 | HMVC 적용 후 modules 폴더를 skin으로 바... (2) | ||
이전글 | The Encrypt library requires t... (4) | ||
방문넷
/
2014/07/09 08:18:33 /
추천
0
|
변종원(웅파)
/
2014/07/09 10:02:51 /
추천
0
작업 중지하시고 매뉴얼을 다시 한번 보시고 작업하세요.
컨트롤러, 모델, 뷰의 기본 역할과 형태를 숙지하지 못하면 프레임워크를 사용할 수 없습니다. 주소와 컨트롤러(메서드)가 매칭되고 모델에서 데이터를 어떻게 가져와서 뷰에 전달해서 화면을 출력하는지 기본 구조와 형태를 알아야 합니다. |
StaG
/
2014/07/11 17:33:05 /
추천
0
일이 있어서 이제야 답글을 확인했네요.. 답글 달아주신 위에 두분께 감사드립니다. 방문넷님 / 방문넷님께서 말씀하신대로... contollers / abc.php views / header.php / index.php / footer.php 이러한 파일 구조를 가지고 있습니다. 또한 조언해주신 1,2,3번의 내용을 다 적용했습니다. 그리고 웹브라우저로 실행해보니... 주소창은.. http://192.168.56.102/web/abc/home 이렇게 표시가되고... 출력된 내용은... Not Found The requested URL /index.php/abc/home was not found on this server. Apache/2.2.22 (Ubuntu) Server at 192.168.56.102 Port 80 이렇습니다... 여기서 index.php/abc/home 빨간색의 index.php 파일은 CI의 루프 폴더(application, system등의 하위폴더가 있는곳)에 있는 파일인것이 맞나요? 맞는것 같기는 한데... 정확히 파악이 안되는군요... 현재...주소창에.. 이렇게만 넣으면 홈페이지의 첫화면이 뜹니다. abc 컨트롤러에서…. <?php class abc extends CI_Controller{ function index() { $data['page_title'] = "환영합니다."; $this->load->view('index',$data); } function home() { $data['page_title'] = "환영합니다."; $this->load->view('index',$data); } } ?> function index()를 해주었기 때문이라 생각됩니다. 이 function index() 부분을 없애고.... 주소창에... 이렇게 입력하면 역시나 첫화면이 뜨질 않습니다.. 그런데 이상한건…function index()를 다시 넣고... http://192.168.56.102/web/abc 이라고 치면 안뜨더군요.. http://192.168.56.102/web/abc/home 역시 뜨질 않습니다. 무엇이 문제일까요... 고견 부탁드립니다.. |
contollers / abc.php
views / header.php
/ index.php
/ footer.php
이렇게 파일구조로 하셨지요? 자 그럼 약간 도움을 드리겠습니다
1. header.php 파일안에 class를 지워주세요. class Menu extends CI_.......... Menu 컨트롤러를 만든거나 마찬가지있는데 보아하니 뷰파일에있네요?? 아님 설명과정에서 잘 못 타이핑 하셨거나요..
2. header.php 안에 anchor 코드안의 내용을 header/menu/home을 abc/home 으로 변경해주세요.
3. abc컨트롤러 안에 함수를 하나 더 만들어줍니다. function home() {//코드는 알아서~}
파란색은 class를 뜻하는거구요 빨간색은 함수 입니다. 딱 감이 오시리라 굳건히 믿고 이만 물러나겠습니다~