菜单,角色模块作业总结

原创 2018-12-10 15:34:45 231
摘要:作业总结:这次课程其他没问题,就是觉得那个无限极列表有点复杂,看明白了,但是还不是很熟。以后会复习一下。菜单模块:<?php namespace app\admin\controller; use think\Controller; use Util\SysDb; class Menus extends Base {  &

作业总结:

  1. 这次课程其他没问题,就是觉得那个无限极列表有点复杂,看明白了,但是还不是很熟。以后会复习一下。

菜单模块:

<?php
namespace app\admin\controller;
use think\Controller;
use Util\SysDb;
class Menus extends Base
{
    public function index()
    {
        // 获取当前页面的pid
        $pid=(int)input('get.pid');
        // 获取当前pid下的子菜单
        $data['list']=$this->db->table('menus')->where(['pid'=>$pid])->lists();
        $data['pid']=$pid;
        // 获取父菜单的数据
        $data['back']=$this->db->table('menus')->where(['mid'=>$pid])->item();

        return $this->fetch('',$data);
    }

    public function add()
    {
        // 获取pid得到当前的父菜单
        $pid=(int)input('get.pid');
        // 获取mid判断是添加还是更新
        $mid=(int)input('get.mid');
        $data['pid']=$pid;
        $data['mid']=$mid;
        // 通过pid获取父菜单的标题
        $data['title']=$this->db->table('menus')->where(['mid'=>$pid])->item();
        // 获取需要编辑的菜单的数据
        $data['res']=$this->db->table('menus')->where(['mid'=>$mid])->item();
        return $this->fetch('',$data);
    }

    public function save()
    {
        $data=input('post.');
        if($data['title'] == ''){
            return ['res'=>1,'msg'=>'菜单名称不能为空'];
        }

        if($data['pid']>0 && $data['controller'] == ''){
            return ['res'=>1,'msg'=>'控制器不能为空'];
        }
        if($data['pid']>0 && $data['method'] == ''){
            return ['res'=>1,'msg'=>'方法不能为空'];
        }
        // 判断是添加还是更新
        if ($data['mid']) {
            $res = $this->db->table('menus')->update($data);
            if ($res)
            {
                return ['res'=>0,'msg'=>'更新成功'];
                }else{
                return ['res'=>1,'msg'=>'更新失败'];
            }
        }else{
            $res = $this->db->table('menus')->insert($data);
        if ($res)
            {
                return ['res'=>0,'msg'=>'添加成功'];
                }else{
                return ['res'=>1,'msg'=>'添加失败'];
            }
        }

    }

    public function del()
    {
        $mid=input('get.mid');
        $res=$this->db->table('menus')->where(['mid'=>$mid])->delete();
        if ($res)
            {
                return ['res'=>0,'msg'=>'删除成功'];
                }else{
                return ['res'=>1,'msg'=>'删除失败'];
            }

    }
}

角色模块:

<?php
namespace app\admin\controller;
use think\Controller;
use Util\SysDb;
class Roles extends Base
{
    public function index()
    {
        // 获取数据并输出
        $data['lists']=$this->db->table('roles')->lists();

        return $this->fetch('',$data);
    }

    public function add()
    {
        // 获取传过来的角色id
        $rid = (int)input('get.rid');
        // 获取该id的数据,
        $group = $this->db->table('roles')->where(['rid'=>$rid])->item();

        if($group){
            $group['rights'] = json_decode($group['rights']);
        }
        // 以mid为下标,取出数组
        $menu_list = $this->db->table('menus')->where(['status'=>0])->cates('mid');
        // 遍历,如果pid不存在,则传入,如果pid存在则保存在父菜单中的[chidren]中
        $menu = $this->gettreeitems($menu_list);

        $results = [];
        // 遍历,递归,取出每个children数组里面的值,输出数据。
        foreach ($menu as $value) {
            $value['children'] = isset($value['children'])?$this->formatMenus($value['children']):false;
            $results[] = $value;
        }
        $data['menus'] = $results;
        $data['group'] = $group;
        return $this->fetch('',$data);
    }
    // 把子菜单放入父菜单的children中
    private function gettreeitems($items){
        $tree = [];
        foreach ($items as $item) {
            if(isset($items[$item['pid']])){
                $items[$item['pid']]['children'][] = &$items[$item['mid']];
            }else{
                $tree[] = &$items[$item['mid']];
            }
        }
        return $tree;
    }
    // 取出每个菜单最后的children里面的数据,然后unset,循环
    private function formatMenus($items,&$res = array()){
        foreach ($items as $item) {
            if(!isset($item['children'])){
                $res[] = $item;
            }else{
                $tem = $item['children'];
                unset($item['children']);
                $res[] = $item;
                $this->formatMenus($tem,$res);
            }
        }
        return $res;
    }

    public function save()
    {
        // 获取当前rid
        $rid = (int)input('post.rid');

        $data['title'] = trim(input('post.title'));
        $menus = input('post.menu/a');
        if(!$data['title']){
            return['code'=>1,'msg'=>'角色名称不能为空'];
        }
        $menus && $data['rights'] = json_encode(array_keys($menus));
        // 如果$gid存在则
        if($rid){
            $this->db->table('admin_groups')->where(['rid'=>$rid])->update($data);
        }else{
            $this->db->table('admin_groups')->insert($data);
        }
        return['code'=>0,'msg'=>'保存成功'];}
    public function del()
    {
        $mid=input('get.mid');
        $res=$this->db->table('menus')->where(['mid'=>$mid])->delete();
        if ($res)
            {
                return ['res'=>0,'msg'=>'删除成功'];
                }else{
                return ['res'=>1,'msg'=>'删除失败'];
            }

    }
}


批改老师:天蓬老师批改时间:2018-12-10 15:50:36
老师总结:这些都是开发中,一些最基本的知识点,多做几次就熟悉了

发布手记

热门词条