第八天目标:
1、各种收尾
进入开发:
一、输入 tp6.cn/admin 会出现错误解决
正确的办法是直接跳转到 管理后台控制中心页面,未登录则跳转到登录
解决办法:
建立一个app/controller 目录下 建立Error的控制器,然后在控制器中跳转。
郁闷的是:再Error.php控制器中使用 redirect跳转和header跳转都无效,只能使用 js跳转了
1 namespace app\controller; 2 3 class Error 4 { 5 public function __call($method, $args) 6 { 7 8 if(request()->url() == "/admin/") 9 { 10 echo "<script type='text/javascript'>window.location='/admin/index/index.html'</script>"; 11 } 12 13 return 'Error,您请求的控制器找不到!'; 14 } 15 }
二、去除管理后台多余不用的菜单和内容
面子上面的功夫花费时间少,要做好看一点,别添加无效的菜单和内容。
加功能很难,但是删除很快....
三、关闭调试模式
将.evn 里面的 APP_DEBUG 的值修改为 FALSE
四、添加菜单和权限控制
思路是菜单显示权限和菜单里面的内容操作权限分开来。
分别为 一级,二级 和三级菜单。一级,二级,为菜单控制,三级为菜单下面的操作权限。
菜单权限控制代码:
controller/Index.php
1 $data_list = Db::name('yphp_admin_power')->where("pstatus",1)->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 2 foreach ($data_list as $key => $val) 3 { 4 //获取二级菜单 5 $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("pstatus",1)->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray(); 6 } 7 $return_data['power_list'] = $data_list; 8 9 //获取用户权限 10 $return_data['powers_arr'] = array(); 11 if($this->admin_info['admin_role_id'] == 0) 12 { 13 $return_data['powers'] = 'all'; 14 } 15 else 16 { 17 $role_powers = Db::name('yphp_admin_role')->where("role_id",$this->admin_info['admin_role_id'])->value('role_powers'); 18 if($role_powers == 'all') 19 { 20 $return_data['powers'] = 'all'; 21 } 22 else 23 { 24 $return_data['powers'] = 'custom'; 25 $return_data['powers_arr'] = explode(",",$role_powers); 26 } 27 }
模板文件权限控制 index/index.html
1 {if in_array($val['id'],$powers_arr)} 2 <li> 3 <a href="javascript:;"> 4 <i class="iconfont left-nav-li" lay-tips="{$val['pname']}">{:base64_decode($val['picon'])}</i> 5 <cite>{$val['pname']}</cite> 6 <i class="iconfont nav_right"></i></a> 7 <ul class="sub-menu"> 8 {foreach $val['child'] as $val2} 9 10 {if in_array($val2['id'],$powers_arr)} 11 <li> 12 <a onclick="xadmin.add_tab('{$val2['pname']}','{:url('/admin/'.$val2['pcontroller'].'/'.$val2['paction'])}')"> 13 <i class="iconfont"></i> 14 <cite>{$val2['pname']}</cite></a> 15 </li> 16 {/if} 17 18 {/foreach} 19 </ul> 20 </li> 21 {/if}
结束的话:
至此,这个练手项目算是结束了。一共用了10天左右吧。代码上传到了 github上面;
github项目地址:git@github.com:yangphp/tp6pro.git