CI 묻고 답하기

제목 _remap($method)를 사용할 경우 파라미터는 어떻게 받나요?
글쓴이 코드이구나 작성시각 2011/05/23 11:31:59
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 24988   RSS
또 질문올립니다.;;;

_remap($method)를 사용할 경우 파라미터는 어떻게 받나요?

public function _remap($method) {
  // top menu
  $this->load->view('siteadmin/top');
  
  // left menu
  $this->load->view('siteadmin/product/left');
  
  // main
  $this->$method();
  
  // bottom
  $this->load->view('siteadmin/bottom');
 }
이렇게 돼 있는 상태에서

public function read($pdt_id) {
이 메소드가 파라미터를 못받아 온다고

A PHP Error was encountered

Severity: Warning

Message: Missing argument 1 for Product::read(), called in /home/xxxxx/public_html/application/controllers/siteadmin/product.php on line 18 and defined

Filename: siteadmin/product.php

Line Number: 51

요런 에러가 뜹니다.

routes.php 에서  $route['siteadmin/product/read/(:num)'] = "siteadmin/product/read/$3";
이런식으로 해도 같은 에러가 뜨네요.
제가 뭘 잘못했는지 몰겠습니다.. 도와주세요~~

태그 route,_remap,파라미터
 다음글 외부사이트에서 페이지에 접근하려고 하면 500 에러가 ... (1)
 이전글 오라클 DB 연동시 'OCI_COMMIT_ON_SUCC... (2)

댓글

헛발이 / 2011/05/23 12:24:51 / 추천 0
function _remap() {

    $sgm = 현재 URL(URI)정보를 가져오는 함수를 만든다.
    $method = $sgm에서 자기만의 URI룰로 원하는 메소드를 찾아오는 함수를 만든다

    if ($method==='lists') {
        $this->lists();

    } elseif ($method==='register') {
        $this->register();

    } elseif ($method==='modify') {
        $this->modify();

    } else {
        $this->index();

    }

}

저같은 URI정보를 갖어 오는 함수나 메소르를 찾는 함수등을 포럼소스에 있던것을 사용하고 있습니다.
포럼에서 segment_explode 또는 url_explode 이런 검색어로 한번 검색해보세요..

자신만의 룰로 자신만의 함수를 만들어도 되긴 하지만 시간도 걸리고 검증도 안되고 해서
부끄럽지만 포럼소스를 배껴 쓰고 있답니다.. ^^;;

그런데 위의 소스를 보니 해더부분 메뉴부분 콘텐츠부분 푸터부분으로 되어 있는걸 보니
레이아웃을 만드는 모양이군요...

레이아웃이라면... Hook또는 위젯등으로 적용하는것도 좋은 방법이기도 합니다..
참고로 저는 hooks를 이용한 레이아웃을 사용하고 있습니다..

코드이구나 / 2011/05/23 12:49:54 / 추천 0
아~ 그렇군요!! 정말 감사합니다^^;; 많은 정보 얻어갑니다~
코드이구나 / 2011/05/23 14:53:03 / 추천 0
매뉴얼 보다가 알게 된 사항이 있어서 추가해봅니닼

$this->uri->segment(); 를 이용해서

// main
  switch ($method) {
   // 읽기
   case 'update_frm':
    $pdt_id = $this->uri->segment(4);
    $this->$method($pdt_id);
    break;
   default :
    $this->$method();
  }
요렇게 처리했습니다.
kirrie / 2011/05/23 15:46:02 / 추천 0
function _remap($method)
{
  if(method_exists($this, $method))
  {
    $this->{$method}();
  }
  else
  {
    $this->index();
  }
}

이렇게 하면 메소드 추가할때마다 수정할 필요가 없죠. (현재 인스턴스 가운데서 메소드가 있으면 그냥 실행하고, 없는 메소드를 호출하면 index를 호출합니다. 아니면 적절한 다른걸 실행해도 됨)
코드이구나 / 2011/05/23 16:44:32 / 추천 0
kirrie님/ 위에 방식대로 하면 $pdt_id = $this->uri->segment(4); 이걸 쓰지 않아도

파라메터를 받아올 수 있는 건가요? +_+