CI 묻고 답하기

제목 pagination 질문입니다.
글쓴이 freeseamew 작성시각 2014/09/22 18:03:01
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15871   RSS
페이지 번호를 클릭하면 url뒤에 페이지가 숫자가 아닌 &per_page=10 식으로 해서 링크가 생성되고 있습니다. 

ex) http://localhost:8080/php/impact_dashboard/index.php/admin/read_log_list/category/0/page&per_page=10

&per_page=10 가 아닌 그냥 숫자 10 으로 링크가 생성되는 방법이 어떤 것인지 도움 부탁드릴게요 

소스는 아래와 같습니다. 

참고로 $config['page_query_string'] = FALSE; 도 해봤지만 안되는군요 ㅠㅠ



        $uri_segment = 6;

        $get_category = $this->uri->segment(4);
        $get_page = $this->uri->segment(6);

        $this->load->model('data_m');
        $this->load->library('pagination');

        //$config['base_url'] = base_url().'index.php/board/read_board_list/category/'.$get_category.'/page/';
        
        //$config['page_query_string'] = FALSE;
        //$config['num_links'] = 2;

        $config['base_url'] = base_url().'index.php/admin/read_log_list/category/'.$get_category.'/page';
        $config['total_rows'] = $this->data_m->read_log_list_m('count','','');
        $config['per_page'] = 10; // 한 페이지에 표시할 게시물 수
        $config['uri_segment'] = $uri_segment; // 페이지 번호가 위치한 세그먼트

        $config['full_tag_open'] = '<div class="pagination"><ul>';
        $config['full_tag_close'] = '</ul></div>';
        $config['cur_tag_open'] ='<li class="active"><span>';
        $config['cur_tag_close'] ='</span></li>';
        
        $config['num_tag_open'] ='<li>';
        $config['num_tag_close'] ='</li>';        
        $config['prev_tag_open'] ='<li>';
        $config['prev_tag_close'] ='</li>';        
        $config['next_tag_open'] ='<li>';
        $config['next_tag_close'] ='</li>';        
        $config['first_tag_open'] = '<li>';
        $config['first_tag_close'] = '</li>';
        $config['last_tag_open'] = '<li>';
        $config['last_tag_close'] = '</li>';

        //$config['first_tag_open'] = '<li'>;        

        // 페이지네이션 초기화
        $this->pagination->initialize($config);

        // 페이징 링크를 생성하여 view에서 사용할 변수에 할당
        $data['pagination'] = $this->pagination->create_links();

        // 게시물 목록 불러오기 위한 offset, limit 값 가져오기
        $data['page'] = $page = $this->uri->segment($uri_segment, 1); // segment 값이 없을 경우 기본을 1로 세팅한다는 의미 & 
    
        // 페이지 생성
        if($page > 1){
            $start = (($page/$config['per_page'])) * $config['per_page'];
        }
        else {
            $start = ($page-1) * $config['per_page'];
        }
        
        $limit = $config['per_page'];

        $data['list'] = $this->data_m->read_log_list_m('', $start, $limit);
        /**/
        
        $this->load->view('admin/log_list_v', $data);
 다음글 ci 컨트롤러 관련해서 질문드립니다. (2)
 이전글 controller 내에서 method간 변수 전달 (4)

댓글

변종원(웅파) / 2014/09/22 18:35:19 / 추천 0
매뉴얼에 답이 있습니다. (http://cikorea.net/user_guide_2.1.0/libraries/pagination.html)

$config['page_query_string'] = TRUE
freeseamew / 2014/09/22 19:11:25 / 추천 0
문제는 그 부분을 true나 false로 바꿔도 계속 같은 상태가 유지 됩니다. ㅠㅠ

혹시 다른 부분의 설정이 필요한지 아시는 분은 도움 부탁드립니다. 
darkninja / 2014/09/22 19:37:39 / 추천 0
초짜라 소스만 봐서는 잘 모르겠네요
ci 의 기본 라이브러리를 사용하신건지
새로 만드시는 건지...

아래는 제가 사용하는 코드 조각입니다.
$config['uri_segment']          = 3;
$config['page_query_string']    = FALSE;
$config['use_page_numbers']     = TRUE;
이렇게 기본 설정되어 있고요.


 
 public function index($page_index = 1) {
  $per_page = 10;

  $cnt = 0;
  $categories = $this->board_category_model->paginated($page_index, $per_page, $cnt);
    $root_id = (int)$this->board_category_model->getRoot()['id'];
  
  $page_config = array();
  $page_config['base_url'] = ROOT_PATH.'/'.$this->category_controller.'/index/';
  $page_config['per_page'] = $per_page;
  $page_config['total_rows'] = $cnt;
  
  $this->pagination->initialize($page_config, $page_index);

  $data = Array(
   'head_data' => Array(
    'title' => 'Category list',
   ),
   'view_data' => Array(
    'root_id' => $root_id,
    'categories' => $categories,
    'pageLinks' => $this->pagination->create_links(),
   ), 
    );

  $this->render_page('/index', $data);
 }
kaido / 2014/09/22 20:32:43 / 추천 0
$per_page = 1;  

1로 만들어 놓고 모델에서

$page * $list_size 

이렇게 곱해버립니다.

가장 간단한 방법. 따란!