我已经实现了将一个类别树递归地打印到页面上:
foreach ($categories as $category) {
$tree .='<li>'.$category->title.'';
if(count($category->childs)) {
$tree .=$this->childView($category);
}
}
$tree .='<ul>';
return view('categoryTreeview',compact('categories','allCategories','tree'));
}
public function childView($category){
$html ='<ul>';
foreach ($category->childs as $arr) {
if(count($arr->childs)){
$html .='<li>'.$arr->title.'';
$html.= $this->childView($arr);
}else{
$html .='<li>'.$arr->title.'';
$html .="</li>";
}
}
$html .="</ul>";
return $html;
}
对于DB结构:id|title|parent_id
现在我需要实现一种迭代的方式来将一个类别树打印到页面上,到目前为止我还没有找到解决方案。
我也试探着:
function buildTree($categories) {
$childs = array();
foreach($categories as $category)
$childs[$category->parent_id][] = $category;
foreach($categories as $category) if (isset($childs[$category->id]))
$category->childs = $childs[$category->id];
return $childs[0];
}
$treez = buildTree($categories);
但是我也不知道如何非递归地使用这些数据。
有人能引导我走上正确的道路吗?也许我应该把foreach
循环和某种while条件结合起来?
1条答案
按热度按时间8fq7wneg1#
在您的类别模型中:
在您的模型中:
刀片服务器(category.blade.php)
blade.php中的一个页面
我没有测试代码,只是直接写在这里的texteditor.我希望你明白的想法.