0

これは、CI でのページネーションの最初の試みであり、おそらくルーティングが原因であると思われる小さな問題に直面しています。

私のルールは次のとおりです。

$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']);

私のモデルでは、 simple を使用しましたlimit:

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

リンクとすべてが正常に機能しますが、機能しません。のような URL を取得して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;
    }
4

3 に答える 3

0

これが役立つことを願っています。ページネーションの 2 つの重要な要素は、クエリの uri セグメントと制限オフセットです。$cofig['uri_segment'] のような $config の (フォーマットに使用する必要はない) を完成させようとする場合にも役立ちます。

このリンクを確認して、構造とアルゴリズムを確認してください。役立つ場合があります。 Codeigniter、ページネーションの設定

于 2012-11-28T03:11:41.867 に答える
0

問題は実際にありましたuri_segment。URL のどの部分がページ番号であるかを指摘しなければなりませんでした。このように:$config['uri_segment'] = 5;そして、私は自分のページを次のようにロードします:

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

よく働く。ご協力ありがとうございました!

于 2012-08-14T10:47:42.160 に答える
0

次の URL "http://site.com/index.php/user/1/tomek/2" が必要です: $route['User/(:num)/(:any)/(:num)'] = 'ユーザー/インデックス/$1/$2/$3';

おそらく、ルートから index を除外できます。これは、それが呼び出す標準関数であるためです。

于 2012-08-14T09:13:55.010 に答える