/**
* 递归方法 菜单树形获取
* @param array $elements 所有菜单
* @param $rules 被选中的菜单ID
* @param $parentId 菜单父级ID
* @return array
*/
public static function buildTree(array $elements,$rules=[], $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['pid'] == $parentId) {
// 只有当 $rules 是一个非空数组时,才执行以下逻辑
if (!empty($rules) && is_array($rules)){
if (in_array($element['id'],$rules)){
$element['check'] =true; //这里用来判断是否选中
}else{
$element['check'] = false;
}
}else{
$element['check'] = false;
}
$children = self::buildTree($elements,$rules, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
public static function ruletree($where=[],$rules=[])
{
$data = self::where($where)->order('id asc')->select()->toArray();
return self::buildTree($data,$rules);
}
该方法我写在模型层中的,根据自己需要来写。