| 제목 | 페이징 처리 질문.. | ||
|---|---|---|---|
| 글쓴이 | 니로 | 작성시각 | 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 형태로 쓰시던가 해야합니다.