我正在使用Eloquent做产品目录,我有2个型号:产品和类别。每个类别可以有许多产品,每个产品属于一个类别。我的类别模型包含以下列:
id
title
parent_id
slug
和产品型号有:
id
title
body
category_id
slug
当我创建一个类别时,默认情况下parent_id设置为0,这意味着它不是子类别,而是父类,即:
Cars
--Audi
汽车的parent_id设置为0,奥迪的parent_id设置为1(因为汽车类别的ID为1)。然后我为嵌套行创建了模型:
ItemsHelper.php:
<?php
class ItemsHelper {
private $items;
public function __construct($items) {
$this->items = $items;
}
public function htmlList() {
return $this->htmlFromArray($this->itemArray());
}
private function itemArray() {
$result = array();
foreach($this->items as $item) {
if ($item->parent_id == 0) {
$result[$item->title] = $this->itemWithChildren($item);
}
}
return $result;
}
private function childrenOf($item) {
$result = array();
foreach($this->items as $i) {
if ($i->parent_id == $item->id) {
$result[] = $i;
}
}
return $result;
}
private function itemWithChildren($item) {
$result = array();
$children = $this->childrenOf($item);
foreach ($children as $child) {
$result[$child->title] = $this->itemWithChildren($child);
}
return $result;
}
private function htmlFromArray($array) {
$html = '';
foreach($array as $k => $v) {
$html .= "<ul>";
$html .= "<li>" . $k . "</li>";
if(count($v) > 0) {
$html .= $this->htmlFromArray($v);
}
$html .= "</ul>";
}
return $html;
}
}
然后我在刀片文件中打印类别层次结构:
{{ $itemsHelper->htmlList() }}
它输出一个类别树。我可以通过访问/category/cars
访问汽车类别,但如果它是汽车类别的孩子,那么它应该是/category/cars/audi
我如何在我的路线中设置它?
routes.php文件:
Route::resource('category', 'CategoryController');