만들면서 배우는 CodeIgniter Q&A

제목 3.3 보기 만들기 부분에서
글쓴이 nc2u 작성시각 2013/07/29 00:47:30
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 11543   RSS
 안녕하세요.

이번에 코드이그나이터 배워보려고 책을 사서 따라하고 있는데요.. 저같이 처음 따라하는 사람에게는 설명이 중간 중간 
빠진 부분들이 있어 혼자 해결해 가면서 하려니 시간이 상당히 걸리네요 ㅠㅠ

하여간 어제 3.2 목록만들기 (51p.) 부분을 진행해 놓고 결과물이 안나와서 혼자 끙끙거리다가 
결국 helper('date'); 부분이 빠져 있는걸 발견하고 해결을 해놓고 

오늘 그다음 3.3 보기 만들기(58p.) 부분을 다 따라 해 놓고 보니 결과물이 안나오는데요....

목록을 클릭하면  404 Page Not Found  페이지가 뜨구요....오타 있는지 다 확인해서 잡고 해도 도저히 안되서
결국은 소스 다운 받아서 컨트롤러 모델 뷰 부분 소스를 다 복사해서 옮기고 테스트 해도 404가 계속 뜨는데요...

컨트롤러 부분
function view()
 {
  // todo 번호에 해당하는 데이터 가져오기
  $id = $this->uri->segment(3); // index.php 를 기준(0)으로 '/' 로 구분되는 순서
  $data['views'] = $this->todo_m->get_view($id); // DB에서 데이터를 가져오는 모델
  // view 호출
  $this->load->view('todo/view_v', $data); //뷰를 로딩 / 로딩할 뷰에서 출력할 $data 배열을 넘겨줌 // 뷰에 데이터를 넘길 때는 반드시 2차 배열 형태로 넘겨야 함
 }
모델 부분
function get_view($id)
  {
   $sql = "SELECT * FROM items WHERE id='".$id."' ";
   $query = $this->db->query($sql);
   $result = $query->row();

   // 내용 반환
   return $result;
  }
뷰 부분은 길어서 생략 --> todo/application/views/todo/view_v.php 파일 원본 소스로 복사해 넣었다고 치고요 ;;

아무래도 원인을 모르겠네요....좀 힌트좀 주세요 ;;;
 다음글 todo 예제를 따라하던중 (5)
 이전글 todo의 경로문제... (2)

댓글

변종원(웅파) / 2013/07/29 08:38:40 / 추천 0
뷰 소스는 문제가 없습니다. 55페이지 목록 소스에서 뷰로 가는 3번의 링크의 주소를 확인해보세요. 404는 컨트롤러나 메소드명이 다르거나 뷰파일이 없거나 이름이 달라서 나오는 not found입니다. 현재 올려주신 소스상으로는 문제없습니다. 컨트롤러 전체 올려주세요
nc2u / 2013/07/29 22:58:03 / 추천 0
<?php if ( ! defined('BASEPATH')) exit ('No direct script access allowed');
 /* todo 컨트롤러 */
 class Main extends CI_Controller {
  function __construct()
  {
   parent::__construct();
   $this->load->database();
   $this->load->model('todo_m');
   $this->load->helper(array('url', 'date'));
  }
  /* 주소에서 메서드가 생략되었을 때 실행되는 기본 메서드 */
  public function index()
  {
   $this->lists();
  }
  /* todo 목록  */
  public function lists()
  {
   $data['list'] = $this->todo_m->get_list();
   $this->load->view('todo/list_v', $data);
  }
 }
 /* todo 조회 */
 function view()
 {
  // todo 번호에 해당하는 데이터 가져오기
  $id = $this->uri->segment(3);
  $data['views'] = $this->todo_m->get_view($id);
  // view 호출
  $this->load->view('todo/view_v', $data);
 }

 /* End of file main.php */
 /* Locaton: ./application/controllers/main.php */
?>
컨트롤러 전체 소스입니다..


주소는 ... xampp 설치했구요...

 http://localhost/todo/index.php/main/view/1   <----이 주소에 문제 있나요 혹시?
이거 가지고 이틀째 끙끙거리네요 원인을 못찾아서요 ㅠㅠ

nc2u / 2013/07/29 23:45:00 / 추천 0
 아 죄송합니다...드디어 찾았네요 ㅠㅠ; 
function view(); 함수가 Main 클래스 바깥에 있었어요 ;;;;;;;;;;꾸벅...이게 왜 이틀동안이나 발견이 안됐을까요ㅠㅠ;

그런데 궁금한게 하나 더 있는데요 ...그걸 찾다가...원본소스에는 컨트롤러하고 모델 파일 제일 끝에.. "?>" 이게 
없는걸 발견했는데요 ...테스트 해보니 있어도 없어도 상관 없이 동작 하네요??

한번도 저런식으로 써본적이 없어서 원래 php가 그랬던건가요?? 아님 ci 라서 다른 곳에서 닫아주는 코드가 있는건가요?


변종원(웅파) / 2013/07/30 00:18:46 / 추천 0
nc2u / 2013/07/30 14:49:31 / 추천 0
감사합니다 꾸벅