laravel路由中的类别树

时间:2014-09-08 19:15:48

标签: laravel laravel-4 laravel-routing

我正在使用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');

0 个答案:

没有答案