2012-08-14 6 views
0

이것은 CI에서 페이지 매김을 시도한 첫 번째 시도이며, 라우팅으로 인한 문제가 있습니다.CodeIgniter - 라우팅 및 페이지 매기기

내 규칙은 다음과 같습니다 :

$route['User/(:num)/(:any)'] = 'User/index/$1'; 
$route['user/(:num)/(:any)'] = 'User/index/$1'; 

사람들은 http://site.com/index.php/user/1/tomek과 같이 변환됩니다.

이제 내 매김 컨트롤러 :

public function getOwned($user,$limit,$start) { 
    $this->db->limit($limit,$start); 
    ... 

링크를 모두 잘 작동하지만, 그들은 작동하지 않습니다 내 모델에서

$config['base_url'] = site_url('user').'/'.$user.'/'.$data['user'][0]['nick'].'/'; 
$config['total_rows'] = $this->rating_model->countOwned($user); 
$config['per_page'] = 2; 
$config['enable_query_strings'] = true; 
$this->pagination->initialize($config); 
... 
$data['owns'] = $this->rating_model->getOwned($data['user'][0]['id'],$config['total_rows'],$config['per_page']); 

, 나는 간단한 limit을 사용했다. http://site.com/index.php/user/1/tomek/2과 같은 URL이 표시되지만 항목은 그대로 유지됩니다. 내 실수는 어디 갔지?

편집> 전체 컨트롤러 코드 :

public function index($user = null) { 
     $session_data = $this->session->userdata('user_data'); 
     $this->db->cache_off(); 

     if($session_data) : 

      $this->load->helper(array('form', 'url')); 
      $this->load->library('pagination'); 
      $this->load->model('user_model'); 
      $this->load->model('rating_model'); 
      $this->load->model('games_model'); 

      if($user) { 
       $user = $user; 
      } else { 
       $user = $session_data['id']; 
      } 

      //vars 
       $data['user'] = $this->user_model->getUser($user); 
       $data['title'] = $data['user'][0]['nick'].' · Profil użytkownika'; 
       $data['age'] = $this->user_model->getAge($data['user'][0]['birth']); 
       $data['sex'] = $this->user_model->getSex($data['user'][0]['sex']); 

       $config['base_url'] = site_url('user').'/'.$user.'/'.$data['user'][0]['nick'].'/'; 
       $config['total_rows'] = $this->rating_model->countOwned($user); 
       $config['per_page'] = 4; 
       $config['enable_query_strings'] = true; 
       $this->pagination->initialize($config); 

       $data['pages'] = $this->pagination->create_links(); 

       $data['rates'] = $this->rating_model->countRates($user); 
       $data['rates2'] = $this->rating_model->countGrades($user); 

       $data['developers'] = $this->games_model->getDevelopers(); 
       $data['genres'] = $this->games_model->getGenres(); 
       $data['platforms'] = $this->games_model->getPlatforms(); 

       $data['nowPlaying'] = $this->rating_model->getNowPlaying($data['user'][0]['id']); 

       $data['owns'] = $this->rating_model->getOwned($data['user'][0]['id'],$config['total_rows'],$config['per_page']); 

       //load 
       $this->template->load('template','theme/yourAccount/main', $data); 

     else : 

       $this->load->view('unlogged'); 

     endif; 
    } 
+0

여기서 'uri-> 세그먼트'는 무엇입니까? –

+0

네 번째 URI 세그먼트는 모델의'$ start'에 전달되어야합니다. 그런 일이 있습니까? 그렇다면 어떻게 지내십니까? –

+0

그 네 번째 세그먼트를 전달하지 마십시오. 어떻게해야합니까? 나는 CI의 튜토리얼 (http://codeigniter.com/user_guide/libraries/pagination.html)을 따르고있다. –

답변

0

다음과 같은 URL이 "http://site.com/index.php/user/1/tomek/2"필요 : $ 경로를 [ '사용자/(: num)/(: any)/(: num) '] ='사용자/색인/$ 1/$ 2/$ 3 ';

아마도 경로에서 색인을 벗어날 수 있습니다. 이것은 표준 함수이기 때문에 호출합니다.

+0

이 경로를 추가했지만 도움이되지 않았습니다. –

+0

전체 사용자 컨트롤러 코드를 게시 할 수 있습니까? – Jurgo

+0

색인 기능에 도달합니까? 당신은 주사위를 놓고 시험 했습니까? – Jurgo

0

문제는 실제로 uri_segment에있었습니다. 나는 URL의 어느 부분이 페이지 번호인지 지적해야했다. 이와 같이 : $config['uri_segment'] = 5; 그리고 내 페이지를로드합니다 :

$data['owns'] = $this->rating_model->getOwned($data['user'][0]['id'],4,$this->uri->segment(5)); 

위대한 작품. 도와 주셔서 감사합니다!

0

희망이 도움이 될 것입니다. 페이지 매김에서 중요한 요소는 쿼리의 URI 세그먼트 및 제한 오프셋입니다. 또한 $ cofig [ 'uri_segment']와 같이 $ config (서식 설정에 필요하지 않은 것들)을 완료하려고한다면 도움이 될 것입니다.

이 링크를 확인하고 구조와 알고리즘을 확인하면 도움이 될 수 있습니다. Codeigniter, setting up pagination