对于 CakePHP 2
我想创建一个类别菜单,列出我的产品类别。这是一个 3 级菜单。菜单中的每个类别都是一个链接,可打开一个页面,其中列出了属于它的所有产品。因此,如果类别是父类别,则应列出子类别中包含的所有产品,即 2 个子级别。此外,如果类别是儿童,它应该链接到属于它的产品的列表页面。
话虽如此,这就是我到目前为止所做的。
我根据 cake 的约定使用以下列创建了类别表:
id--parent_id--lft--rght--name
然后是我的产品表:
id--名称--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 的新手 :( 但我想学习它,因为它是一个很棒的工具。
我忘记了一些关于我的数据库的事情,我是否必须在我的表中添加任何其他列才能使这个系统正常工作,或者它是否正确?
最后一件事,由于我在 CakePHP 2 中没有找到关于这个类别/产品动态树菜单的任何内容,我将在 Github 上分享整个代码,以便它可以帮助许多其他人。