0

私はすでに10近くのモジュールでページネーションライブラリを問題なく使用していますが、最後の1つ(そして最も重要なもの)では失敗します。

このセクションのルーティングは次のとおりです。

$route['candidate/sort/(:any)/(:any)/page/(:num)'] = 'candidate/sort/$1/$2/$3';

私のコントローラー

public function sort($type, $id, $page = 1) {
    /* Load Config */
    $data = $this->data;
    $data['sub_active'] = 'candidate';
    $data['type'] = $type;
    /* Get Candidates */
    $total = $this->candidates->getTotal($type, $id);
    if(($this->limit >= $total) && ($page > 1)) {
        $data['candidates'] = $this->candidates->getCandidates(1, $this->limit, $type, $id);
    }elseif(((($this->limit * $page) - $this->limit) >= $total) && ($page > 1)) {
        $data['candidates'] = $this->candidates->getCandidates(ceil($total / $this->limit), $this->limit, $type, $id);
    }else{
        $data['candidates'] = $this->candidates->getCandidates($page, $this->limit, $type, $id);
    }
    /* Pagination */
    $this->load->library('pagination');
    # Config Pagination
    $data['cms']['tables']['total_rows'] = $total;
    $data['cms']['tables']['per_page'] = $this->limit; 
    $data['cms']['tables']['first_url'] = base_url($data['sub_active'].'/sort'.'/'.$type.'/'.$id);
    $data['cms']['tables']['base_url'] = base_url($data['sub_active'].'/sort'.'/'.$type.'/'.$id.'/page');
    $data['page'] = $page;
    $data['total_pages'] = ceil($total / $this->limit);
    $data['total'] = $total;
    # Initialize Pagination
    $this->pagination->initialize($data['cms']['tables']); 
    $data['pagination'] = $this->pagination->create_links();
    /* Display Template */
    $this->twig->display('pages/list_candidate.htm', $data);
}

ベースの最初のURL=myweb.com/candidate/sort/$type/$idおよびベースのURL=myweb.com/candidate/sort/$type/$id/page

ただし、ページネーションは機能しません。常に同じページ(この場合は1ページ目)です。私は他のコントローラーでこれと同じスキーマを使用していますが、正常に動作しますが、これで失敗するだけです。

前もって感謝します。

4

2 に答える 2

3

私はついに答えを見つけました:

$config['uri_segment'] = 6;

これは、codeigniter が URL をうまく検出できないためです。

于 2012-12-22T18:13:45.877 に答える
1

ニース、あなたが答えを見つけてよかったです Tunnecino! しかし、その理由をさらに説明する必要があると思います

私たちの素晴らしい CI ユーザーガイドによると、同じ間違いを繰り返さないように uri_segment を決定する方法は次のとおりです:)

$this->uri->segment(n)

特定のセグメントを取得できます。n は取得するセグメント番号です。セグメントは左から右に番号が付けられます。たとえば、完全な URL が次の場合:

http://example.com/index.php/news/local/metro/crime_is_up

セグメント番号は次のようになります。

1.news

2.local

3.metro

4.crime_is_up

デフォルトでは、セグメントが存在しない場合、関数は FALSE (ブール値) を返します。セグメントが欠落している場合に独自のデフォルト値を設定できるオプションの 2 番目のパラメーターがあります。たとえば、これは失敗した場合に数値ゼロを返すように関数に指示します。

$product_id = $this->uri->segment(3, 0);
于 2013-06-06T13:48:28.063 に答える