0

製品とカテゴリの 2 つのモデルがあります。カテゴリ モデル HABTM 製品

単一のカテゴリを表示するビュー コントローラを作成すると、再帰が 1 に設定されるため、そのカテゴリの製品をロードできます。これは簡単ですが、うまく機能します。

ただし、カテゴリ内の製品のみをページ分割および/または並べ替えるにはどうすればよいですか。私は3つまたは4つの異なるアプローチを試しましたが、私が期待するものを残すものはありません.ソートされた/ページ付けされた製品のグリッドを作成するためにビューに渡すことができるページ付けされた製品.

これがコントローラーで、すべて標準的なものです:

//CATEGORY CONTROLLER
public function view($id = null) {


    $category = $this->Category->find('first', array(
        'recursive' => 1,
        'conditions' => array('Category.id' => $id)
    ));

    if (empty($category)) {
        $this->redirect(array('action' => 'index'), 301);
        $this->Session->setFlash('The category could not be found.');
    }
    $this->set(compact('category'));

    // paginate products and make them available to view -- ???



}

誰?

4

2 に答える 2

0

ページネーションのドキュメントで、次のテキストを検索します。

構成したいモデルにちなんで配列のキーに名前を付けます

これは、複数のモデルや「その他」のモデルを処理する方法をカバーしています。簡単に言えば、次のようなものが必要です。

// CategoriesController::view()
$this->paginate = array(
    'Product' => array(
        'conditions' => array('Product.category_id' => $category_id)
    ),
);
$products = $this->paginate('Product');
$this->set(compact('products'));

条件が「Product」という名前のキーの下に配置されていることに注意してください。

于 2012-11-15T03:26:44.960 に答える
0

ここで尋ねられた別の質問と同じアプローチ。解決策:あるカテゴリから他のカテゴリを除外して書籍を取得する方法 (クロス テーブルを使用)

リンクモデルとページネーションを組み合わせれば完了です。関連するすべての製品を取得した後、category_id の代わりに product_id でフィルタリングするだけです。ページネーションの検索にリンク モデルを使用することも機能するはずです。しかし、それを試したことはありません。テストするだけです;)

こんにちは func0der

于 2012-11-15T22:02:10.493 に答える