2012-08-14 71 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。現在

我的分頁器:

$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

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

鏈接和一切工作正常,但他們不工作。我得到的網址類似於http://site.com/index.php/user/1/tomek/2,但是項目仍然完好無損。我的錯誤在哪裏?

編輯>完整的控制器代碼:

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-> segment'? – 2012-08-14 09:08:24

+0

應將第四個uri段傳遞給模型中的'$ start'。它發生了嗎?如果是的話,你過得怎麼樣? – 2012-08-14 09:11:19

+0

我不'通過第四部分。我怎樣才能做到這一點?我正在關注CI的教程(http://codeigniter.com/user_guide/libraries/pagination.html)。 – 2012-08-14 09:44:43

回答

0

以下網址 「http://site.com/index.php/user/1/tomek/2」 需要: $航線[「用戶/ (:num)/(:any)/(:num)'] ='用戶/索引/ $ 1/$ 2/$ 3';

您可能會將索引留在路線之外。因爲這是它所調用的標準功能。

+0

我添加了此路線,但沒有幫助。 – 2012-08-14 09:45:40

+0

你可以發佈你完整的用戶控制器代碼嗎? – Jurgo 2012-08-14 09:47:21

+0

它到達您的索引功能嗎?你放置了一個die()並測試了嗎? – Jurgo 2012-08-14 10:14:39

0

問題實際上是在uri_segment。我必須指出,url的哪一部分是頁碼。像這樣:$config['uri_segment'] = 5;我用我的頁面加載:

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

很好用。感謝大家的幫助!

0

希望這會有所幫助。分頁中的2個重要因素是uri段和查詢的極限偏移量。如果您嘗試完成$ config(不需要那些用於格式化的),比如$ cofig ['uri_segment'],它也可以幫助您。

嘗試檢查此鏈接並檢查結構和算法,這可能有所幫助。 Codeigniter, setting up pagination