제목 | 페이징 처리 질문.. | ||
---|---|---|---|
글쓴이 | 니로 | 작성시각 | 2015/06/23 13:39:26 |
|
|||
같은 홈페이지 내에 게시판에는 페이징 처리가 되어 사용중인데요 다른 php파일에 페이징 처리하는걸 추가했더니 Fatal error: Call to a member function segment() on a non-object in F:\Project\r_b2b\application\libraries\b2b.php on line 481 이와 같은 에러가 발생합니다 소스는 아래 와 같구요.. // 페이징 처리 private function set_pagination($arr = array()) { $base_url = '/'.$this->uri->segment(1).'/'.$this->uri->segment(2, 'shop').'/'.$this->uri->segment(3, 'index'); //기본 페이지 url $uri_seg = (!isset($arr['uri_seg'])) ? 3 : $arr['uri_seg']; //기준이 될 페이지 segment $this->navi = array( 'base_url' => (!isset($arr['url'])) ? $base_url : $arr['url'], 'total_rows' => (!isset($arr['total_rows'])) ? 0 : $arr['total_rows'], 'page' => $this->uri->segment($uri_seg, '0'), 'per_page' => (!isset($arr['per_page'])) ? 15 : $arr['per_page'], 'uri_segment' => $uri_seg, 'num_links' => 4 ); $this->pagination->initialize($this->navi); $this->data['base_url'] = $this->navi['base_url']; $this->data['limit'] = $this->navi['per_page']; $this->data['offset'] = $this->navi['page']; $this->data['numbering'] = $this->navi['total_rows'] - $this->navi['page']; $this->data['pagination'] = $this->pagination->create_links(); } 해당 php파일 상단부도 올려드릴게요 class B2B { private $CI; public function __construct($COM_ID="") { $this->CI = & get_instance(); $this->load = $this->CI->load; $this->input = $this->CI->input; $this->config = $this->CI->config; $this->session = $this->CI->session; $this->ComID = ($COM_ID) ? $COM_ID : $_COOKIE['SHOP']; //if(!$this->ComID) $this->errorMsg('Close'); } 뭐가 문제 인지 모르겟어요...ㅠ |
|||
다음글 | (왕초보질문) view로 독립시키기 vs. 그냥 페이지... (2) | ||
이전글 | 초보개발자입니다. 설치관련 아주 기초적인 부분 문의드려... (2) | ||
변종원(웅파)
/
2015/06/23 13:45:39 /
추천
0
|
니로
/
2015/06/23 13:56:53 /
추천
0
아하! 그렇게 수정하고나니 에러는 안뜨는데...
// 페이징 처리 private function set_pagination($arr = array()) { $base_url = '/'.$this->CI->uri->segment(1).'/'.$this->CI->uri->segment(2, 'shop').'/'.$this->CI->uri->segment(3, 'index'); //기본 페이지 url $uri_seg = (!isset($arr['uri_seg'])) ? 3 : $arr['uri_seg']; //기준이 될 페이지 segment $this->navi = array( 'base_url' => (!isset($arr['url'])) ? $base_url : $arr['url'], 'total_rows' => (!isset($arr['total_rows'])) ? 0 : $arr['total_rows'], 'page' => $this->CI->uri->segment($uri_seg, '0'), 'per_page' => (!isset($arr['per_page'])) ? 15 : $arr['per_page'], 'uri_segment' => $uri_seg, 'num_links' => 4 ); $this->pagination->initialize($this->navi); $this->data['base_url'] = $this->navi['base_url']; $this->data['limit'] = $this->navi['per_page']; $this->data['offset'] = $this->navi['page']; $this->data['numbering'] = $this->navi['total_rows'] - $this->navi['page']; $this->data['pagination'] = $this->pagination->create_links(); } $this->pagination->initialize($this->navi); 이부분에서 에러가 나네요.. Fatal error: Call to a member function initialize() on a non-object in F:\Project\r_b2b\application\libraries\b2b.php on line 494 이것도 선언을 해야하는건가요..찾아도 안보이는거 같은데.. |
변종원(웅파)
/
2015/06/23 14:21:02 /
추천
0
똑같은 현상입니다.
라이브러리에서는 ci의 자원을 바로 사용할 수 없으므로 바로 $this->pagination을 사용하지 못합니다. 위 답변 참고해서 사용하세요. |
니로
/
2015/06/23 14:28:57 /
추천
0
음.. 그러면 다른데서 처리를 해야하나 보네요......
|
니로
/
2015/06/23 14:32:14 /
추천
0
그럼 view 밑에서는 가능할까요..
|
변종원(웅파)
/
2015/06/23 15:53:02 /
추천
0
우선 기본적인 사용법을 아셔야 할 것 같습니다.
ci 자체의 라이브러리 사용법(http://cikorea.net/user_guide_2.1.0/general/libraries.html)과 내가 추가한 라이브러리의 사용법(http://cikorea.net/user_guide_2.1.0/general/creating_libraries.html)을 읽어보세요. 똑같다고 말씀드린 이유는 소스를 보시면 $this->pagination->initialize($this->navi); 라고 사용하는 부분은 있는데 $this->pagination <- 이걸 선언한 부분이 없는 겁니다. 그러니 initialize()를 호출할 수 없다고 나오는거구요. php class에 대한 부분을 잘 모르신다면 php.net 에서 클래스 부분을 숙지하시고 codeigniter 작업을 하셔야 합니다. |
니로
/
2015/06/23 16:20:14 /
추천
0
ㅠㅠ 감사합니다
php쪽으로 새로 이직을 하다보니.. 실무에 바로 투입되고.. 일은많다보니 혼자 찾아보긴 하는데 힘든감이 있네요 ㅠㅠ |
변종원(웅파)
/
2015/06/23 18:25:05 /
추천
0
우선 $this 객체를 쓸 수 있는 범위부터 알아야 합니다. (mvc만 $this객체를 바로 사용할 수 있습니다)
그 외에는 ci $this 객체를 바로 사용하지 못하고 인스턴스를 할당해서(사용하시는 방법처럼) 써야합니다. 전 개발자가 그렇게 해놓은 것인지는 모르겠지만 $this->CI = & get_instance();
$this->load = $this->CI->load; <- 이런 식의 재할당은 헷갈릴 소지가 많습니다.
그냥 $this->CI나 $CI에 할당하여 사용하시는게 좋고 원래는 컨트롤러에서 선언하여 사용하는 initialize()를 라이브러리에서 사용하다 보니 방식이 달라 헷갈릴 수밖에 없습니다.
우선 매뉴얼을 쭉 읽어서 대략의 라이브러리 형태들을 익혀놓으시는 것이 좋습니다. 대략의 형태를 알면 라이브러리에서 $this->pagination->initialize($this->navi); 라고 사용하면 에러가 난다는 것을 알 수 있습니다. ci는 매뉴얼만 잘 숙지해도 작업하시는데 큰 지장이 없습니다. ^^ |
상단 construct에 선언하거나 $this->CI->uri 형태로 쓰시던가 해야합니다.