0

私は2つのモデルを持っています:

Book
Category

私には2つの見方があります:

books/browse

このビューには、並べ替えオプション、本の言語選択、著者/タイトルフィルターなどを含むページ付けされた本のリストがあります。ないことの1つは、本のカテゴリツリーです。実際、このコントローラーはパラメーターcategory_idを取り、このカテゴリーの本のみを表示します。

categories/tree

このビュー(コントローラー)はカテゴリーツリーを検索し、1つのパラメーター-> category_id->を使用して、ツリーの印刷方法を決定します(すべての親ノード、親リストなどを表示します)。

次に、左側にカテゴリツリーがあり、右側に本のリスト(すべてのものを含む)があるビュー(たとえば、browsetree)が必要です。

これを達成するための最良の解決策は何でしょうか?(問題は、すべてのパラメーター(category_idパラメーター+並べ替え+フィルタリング用のいくつかのGETパラメーター)を含むブックブラウズビューへのリンクを保存できるようにしたいことです。また、ビューまたはコントローラーメソッドを書き直したくありません。 。

- - - - - - - 編集

さて、私は要素categorytreeに私のツリーを持っています、そしてそれはこのように見えます:

$params = $this->requestAction('/categories/tree/'.$category_id); 
print_category($params['tree'][0],$params['parents'],$category_id);

$ category_idは、パラメーターとして要素に渡されます。これは/books/browse内にあります。

<?php echo $this->element('categorytree', array("category_id" => $category_id)); ?>

必要なのは、categorytree要素で、books/browseがロードされる現在のURLに基​​づいて各ツリーノードが/books/browseへの有効なリンクであることを望んでいることです。つまり、URLは次のようになります。

books/browse/34/sort:asc/page:4?author=Author&something=something

このリンクを/books/ browser / ...ビュー内で取得して要素に渡し、それを解析して/ 34 /(カテゴリID)を他のカテゴリに置き換えることができます...しかし、もっと簡単でエレガントな方法はありますかこれを行うのですか?

4

1 に答える 1

1

カテゴリ ツリーを要素に配置し、 CakePHP の requestActionを使用してカテゴリ コントローラからデータを取得します。

ツリー ビューをブック エリアに保持することができます (これは、ユーザーがブラウジングしているものであるため、理にかなっています) - どのビューに配置するかはあなた次第です。

つまり、ユーザーは本を検索しているので、そこにビューとコードを配置する必要があります。カテゴリ ツリーを使用して、本に対するクエリで使用するカテゴリの変数を渡すだけです。

于 2012-04-24T19:57:47.767 に答える