CakePHP 2 の場合
製品のカテゴリを一覧表示するカテゴリ メニューを作成したいと考えています。3段階のメニューです。メニューの各カテゴリは、それに属するすべての製品を一覧表示するページを開くリンクです。そのため、カテゴリが親カテゴリである場合は、子カテゴリ (2 つのサブレベル) に含まれるすべての製品を一覧表示する必要があります。また、カテゴリが子供の場合は、それに属する製品のリスト ページにリンクする必要があります。
そうは言っても、これが私がこれまでに行ったことです。
次の列を使用して、cake の規則に従ってカテゴリ テーブルを作成しました。
id--parent_id--lft--rght--名前
次に、私の製品のテーブル:
id--name--slug--category_id
次に、Category.php モデル:
<?php
class Category extends AppModel {
public $name = 'Category';
public $actsAs = array('Tree');
public $belongsTo = array(
'ParentCategory' => array(
'className' => 'Category',
'foreignKey' => 'parent_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
public $hasMany = array(
'ChildCategory' => array(
'className' => 'Category',
'foreignKey' => 'parent_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
これは、このカテゴリ メニューを保持するページであるため、ProductsController を使用してカテゴリ メニューをレンダリングしています。
<?php
class ProductsController extends AppController{
public $uses = array('Product');
public function index(){
$this->layout = 'products';
$this->loadModel('Category');
$this->set('data',$this->Category->generateTreeList());
}
}
そして私のindex.ctpビュー:
<?php debug($categories); ?>
私が今したいのは、ツリーに従って属する製品ページにリンクする、カテゴリーのネストされた ul-li メニューを作成することです。
<ul class="ulclass">
<li class="liclass"><a href="category">category</a></li>
</ul>
この種のチュートリアルだけをチェックしました。残念ながら、よく説明されたものは見つかりませんでした。TreeHelper は見つかりましたが、使い方がわかりません >>> Github の TreeHelper
ただし、css クラスを追加できるようにして、カテゴリのツリー メニューを制御したいと考えています。このヘルパーが私にこの構造を提供できると思うなら、それで問題ありません。しかし、私はそれを使用する方法がわかりません。言うまでもなく、私は CakePHP を初めて使用します :( でも、素晴らしいツールなので学びたいと思っています。
DB について何か忘れてしまいました。このシステムを機能させるには、テーブルに他の列を追加する必要がありますか?それともそのままで問題ありませんか?
最後に、このカテゴリ/製品の動的ツリー メニューに関する CakePHP 2 の情報が見つからなかったので、Github でコード全体を共有して、他の多くの人に役立つようにします。