thinkphp5添加栏目实现select下拉option树状图结构包含二级三级栏目
控制器部分代码
// 添加栏目
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}
这里主要视图部分
阅读剩余
版权声明:
作者:松跃笔记
链接:https://www.attm.cn/2024/11/06/thinkphp5%e6%b7%bb%e5%8a%a0%e6%a0%8f%e7%9b%ae%e5%ae%9e%e7%8e%b0select%e4%b8%8b%e6%8b%89option%e6%a0%91%e7%8a%b6%e5%9b%be%e7%bb%93%e6%9e%84%e5%8c%85%e5%90%ab%e4%ba%8c%e7%ba%a7%e4%b8%89%e7%ba%a7/
文章版权归作者所有,未经允许请勿转载。
THE END