Для CakePHP 2
Я хотел бы создать меню категорий, в котором будут перечислены категории моих продуктов. Это 3-х уровневое меню. Каждая категория в меню — это ссылка, которая открывает страницу со списком всех продуктов, которые к ней относятся. Итак, если категория является родительской, в ней должны быть перечислены все продукты, содержащиеся в дочерних 2 подуровнях. Кроме того, если категория является дочерней, она должна ссылаться на страницу со списком продуктов, которые ей принадлежат.
С учетом сказанного, вот что я сделал до сих пор.
Я создал таблицу категорий в соответствии с правилами торта со следующими столбцами:
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, но понятия не имею, как его использовать >>> TreeHelper из Github
Тем не менее, я хотел бы иметь контроль над древовидным меню моей категории, имея возможность добавлять классы CSS. Если вы думаете, что этот помощник может предоставить мне эту конструкцию, тогда все в порядке. Но я понятия не имею, как его использовать. И не говоря уже о том, что я новичок в CakePHP :( но я хочу изучить его, потому что это отличный инструмент.
Я что-то забыл о своей БД, мне нужно добавить какой-либо другой столбец в мои таблицы, чтобы эта система работала, или это правильно?
И последнее, поскольку я ничего не нашел для CakePHP 2 об этом динамическом древовидном меню категорий/продуктов, я поделюсь всем кодом на Github, чтобы он мог помочь многим другим.