控制器部分代码
// 添加栏目 public function add() { // 判断是否从父栏目进入 fathorid if (input('fid')) { $fid = input('fid'); // 通过添加子栏目进入,会遍历栏目 // 实例化模型 $typemenu = columnModel::joinColumnChannel(); // 调用模型方法获取整个分类树 $this->assign('typemenu', $typemenu); // 将分类树传递给视图 }else{ $fid = 0; } $this->assign('fid',$fid); return $this->fetch('column/add'); }
模型部分代码
public static function joinColumnChannel($parentId = 0) { // $categories = self::where('fathorid', $parentId)->select(); // 使用模型自身的查询构造器 $categories = self::alias('a') // 为user表设置别名u ->join('channel c', 'a.channel_id = c.cid', 'LEFT') // LEFT JOIN channel表,并设置别名c ->field('a.typeid, a.typename, a.typeurl, a.channel_id, a.sort, a.fathorid, c.cname') // 指定查询的字段 ->where('a.isdel',0) ->where('a.fathorid',$parentId) ->order('a.sort asc') ->select(); // 执行查询,返回结果集 $tree = []; foreach ($categories as &$category) { $category['children'] = self::joinColumnChannel($category['typeid']); // 递归查询子栏目 if (empty($category['children'])) { unset($category['children']); // 如果没有子栏目,则移除children键 } $tree[] = $category->toArray(); // 转换为数组,避免视图层处理对象 } return $tree; }
视图部分代码
{switch name='$fid'} {case value='0'}{/case} {default/} <div class="form-group"> <label for="fathorid" class="col-sm-2 control-label no-padding-right">所属栏目</label> <div class="col-sm-6"> <select name="fathorid" style="width: 100%;"> {volist name='$typemenu' id='list' } {if condition="$list.typeid neq $fid"}<option value="{$list.typeid}">{$list.typename}</option> {else /}<option selected="selected" value="{$list.typeid}">{$list.typename}</option> {/if} {notempty name="list.children"} {volist name="list.children" id="child"} {if condition="$child.typeid neq $fid"} <option value="{$child.typeid}">|————{$child.typename}</option> {else /} <option selected="selected" value="{$child.typeid}">|————{$child.typename}</option> {/if} {notempty name="child.children" id='sunzi'} {if condition="$sunzi.typeid neq $fid"} <option value="{$sunzi.typeid}">|————|————{$sunzi.typename}</option> {else /}<option selected="selected" value="{$sunzi.typeid}">|————|————{$sunzi.typename}</option> {/if} {/notempty} {/volist} {/notempty} {/volist} </select> </div> </div> {/switch}
这里主要视图部分
技术QQ交流群:157711366
技术微信:liehuweb
写评论