2011-07-04 14 views
2

私はページ/ディスカッションを持っており、ページングを実装したいと思います。さて、ページが/ discussionとして読み込まれるのは初めてです。つまり、/ discussion/page/1のようになります。他のページの場合、URLは/ discussion/page/$ pagenumberになります。Codeigniterページ区切りの概念的な問題

ここで問題はindex()です。通常、私はindex()内のすべてのページデータを初期化し、初期化されたデータでビューをロードします。しかし、ここでは、index()でデフォルトのページを初期化し、次にpage()でページングの内容を初期化する必要があります。ですから、ページ()からビューに別のデータセットを送る方法はありますか?私はそれがインデックス()によってロードされるので、ビューをロードしたくありません。

しかし、私は上記のことをすることはできないと思います。だから、おそらく私のindex()を空のままにして、ページ内のすべての初期化()し、ビューをロードする必要があります。あなたは何を言っていますか?

答えて

4

「ページ」と「インデックス」の両方の方法は必要ありません。routeを使用してください。

index()方法を使用し、page()方法をドロップするには:

$route['discussion/page/(:num)'] = 'discussion/index/$1'; 

/discussionはまだdiscussion/index/32

これは、あなたが引数としてページ番号をつかんでいると仮定しにマップされますdiscussion/page/32を要求し、あなたのページ1を与えます(URLセグメント):

function index ($page = 1) {} 

何か他のことをしている、ルートはまだ適切な、おそらくちょうど提供されたものではありません。

+0

私はこれを試しましたが、少しうまくいくようです。しかし、すべてのイメージファイルのパスが変更されます。私は画像を../images/imagename.jpgとして取り込んでいますが、これらのページ変更の後は、../../images/imagename.jpgを使用してフェッチする必要があります。 このルートを追加すると、パスに何かが起こります:(。 – Blueboye

+0

問題は本当に画像の相対パスの使用にあります。フルURL、 '/ absolute/paths/to-image.jpg'を使うか、' img () '関数を呼び出すことができます。動的URLを扱うときに相対パスに依存することはできません。 –

+0

それはうまくいきました:)。もう一つのこと:ページ区切りの最初のページは/ discussion/pageです。/discussion/page/1やjust/discussionに変更するにはどうすればいいですか? – Blueboye

1

私はPEARの素晴らしい、Pager packageを見てみることをお勧めします。ページャは自動的に生成され、(GET)入力変数に応じて正しいインデックスが与えられます。

0

あなたの問題が何であるかはわかりません。

index()メソッドを使用している場合は、そこにすべてのページ設定情報を設定できます。ページ番号を取得するために使用するuriセグメントをページングライブラリに伝える必要があります。 index()

コントローラにはpage()メソッドがありません。すべてのページはページ番号として定義されたuri_segmentによって指定された異なるページングデータセットで同じindex()です。改ページされたクエリーセットはページを通って無傷です。

+0

URLはどのように見えますか(別のページの場合)? – Blueboye

+0

/ディスカッション/インデックス/ 2または/ディスカッション/インデックス/ページ/ 2(ディスカッションはコントローラの名前であり、メソッドのインデックスを付けることができます。 URLから 'index'を削除し、' page'だけを使用する場合は、ルート設定ファイルにそのURLを設定する必要があります: '$ route ['discussion/page /:any'] =" discussion/index/page/$ 1 "; ' – ramono

0

あなたのページメソッドがあなたのインデックスメソッドを飾っているように思えます。コントローラの全体的な構造の詳細を知らなくても、本当に言ってひどくあまりありませんが、それは以下に役立ちますように聞こえる:あなたのURIルーティングクラスまたは使用を検討すべきである、

function page($pos) 
{ 
    $this->index($pos); 
} 

// a default parameter lets you ensure that this does not neet to have a page set. 
function index($pos = 0) 
{ 
    // when calling the DB (I'm guessing that is where the pagination really happens) 
    // COUNT should be defined in the config if possible. 
    $this->db->where/*... add more here...*/->limit(COUNT, $pos); 
} 

を現実的に_resolveメソッドですが、これは必要な処理を行う必要があります。