- 浏览: 1742662 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
<?php /** * 管理菜单 * */ class App_Helper_Admin_Menu { const quuid = 'q'; const qargs = 'args'; const qtitle = 'title'; const qtype = 'type'; const qparent = 'parent'; /** * 扩展选项,如 style class 等等 */ const qoptions = 'options'; const qchildren = 'children'; const qactive = 'active'; /** * 顶级菜单标识 */ const qparent_top = '#ROOT#'; /** * 茎节点 */ const qtype_stem = 'stem'; /** * 叶节点 */ const qtype_leaf = 'leaf'; private function __construct(){ $this->init(); } /** * @return App_Helper_Admin_Menu */ static function getInstance(){ static $it = false; if (!$it){ $it = new self(); } return $it; } /** * 返回生成的 菜单 * * @return array */ private function init(){ $qid = Core_AppUtils::get(Core_Mvc_Router::queryAccessor); $active = false; $catalog = $this->aclFilter($this->loadData()); do { $item = Core_AppUtils::val($catalog,$qid,null); if (empty($item)) break; $active = $catalog[$qid][self::qactive] = true; if (self::qparent_top == $item[self::qparent]) break; $qid = $item[self::qparent]; } while(true); // 转成树 $catalog = (array) Core_AppUtils::array_to_tree($catalog,self::quuid,self::qparent,self::qchildren); // 节点过滤,规范 茎叶类型 $catalog = $this->nodeFilter($catalog); $this->activeItems = array(); $this->catalog = $this->locateActiveItem($catalog); } /** * 返回激活的菜单项数组 * * @return array */ function getActiveItems(){ return $this->activeItems; } /** * 返回生成的菜单数据 * * @return array */ function getCatalog(){ return $this->catalog; } /** * 生成菜单项 * * @param string $quuid * @param array $qargs * @param string $qtitle * @param string $qparent * @param string $qtype * @param array $qoptions * * @return array */ static function createItem($quuid ,$qargs ,$qtitle ,$qparent ,$qtype ,$qoptions=null){ $d = array( self::quuid => $quuid, self::qargs => $qargs, self::qtitle => $qtitle, self::qparent => $qparent, self::qtype => $qtype, ); if (!empty($qoptions)) $d[self::qoptions] = (array) $qoptions; return $d; } private function loadData(){ $catalog = (array) Core_Autoloader::loadFile(APPPATH . '/config/adminmenu.php',false); return Core_AppUtils::array_to_hashmap($catalog,self::quuid) ; } private function addActiveItem(array $item){ if (self::qtype_stem == $item[self::qtype]){ unset($item[self::qchildren]); } $this->activeItems[] = $item; } private function locateActiveItem(array $items){ $activeItem = null; foreach ($items as $offset => $item){ if (Core_AppUtils::val($item,self::qactive,false)){ $activeItem = & $items[$offset]; break; } } if (empty($activeItem)) { $activeItem = & $items[0]; $activeItem[self::qactive] = true; } $this->addActiveItem($activeItem); if (self::qtype_stem == $activeItem[self::qtype]){ $activeItem[self::qchildren] = $this->locateActiveItem($activeItem[self::qchildren]); } return $items; } private function nodeFilter(array $items){ if (empty($items)) return $items; $data = array(); foreach ($items as $item){ switch ($item[self::qtype]) { case self::qtype_leaf: unset($item[self::qchildren]); break; case self::qtype_stem: if (empty($item[self::qchildren])){ $item[self::qtype] = self::qtype_leaf; unset($item[self::qchildren]); }else { $item[self::qchildren] = $this->nodeFilter($item[self::qchildren]); } break; default: $item = null; } if (!empty($items)) $data[] = $item; } return $data; } private function aclFilter(array $items){ if (empty($items)) return $items; if (Core_Event::isRegistered(Core_Mvc_EventId::dispatching_aclcheck)){ $data = array(); foreach ($items as $uuid => $item){ if (App_Convention::canAccess($uuid) ){ $data[$uuid] = $item; } } return $data; } return $items; } }
评论
1 楼
vb2005xu
2012-05-07
教育部考试中心成绩查询系统
http://chaxun.neea.edu.cn/examcenter/query.cn?op=doQueryCond&sid=280&pram=results
http://chaxun.neea.edu.cn/examcenter/query.cn?op=doQueryCond&sid=280&pram=results
发表评论
-
ws-http 最简单轻量的PHP CURL工具库
2016-07-29 20:44 2549欢迎大家拍砖 https://github.com/to ... -
Facade 包装类 -- 解决视图里面长长的命名空间调用问题
2016-04-20 10:48 1652有时候模版里面定义 ... -
PHP单例模式面试注意事项
2015-10-20 09:57 1898最近面了不少PHP从业者,有实习生也有5/6年以上的开发者 ... -
NGINX 配置 SSL 证书 搭建 HTTPS 网站
2015-10-19 19:19 2859下面是详细的配置过程: 1、在服务器上使用 Open ... -
关于php cron任务管理的实现假想
2015-10-17 21:25 1824之前每开发一个计划任务功能均需要在线上操作crontab来新 ... -
修改一些PHP工具
2014-10-24 19:27 1740原来的代码 在非框架下是木有问题的,但是用在框架下就报错, ... -
sublime text linux上中文输入问题的终极解决方案
2014-10-13 11:07 8506我一直在使用sublime text ... -
qeephp3.0 发布了
2014-10-07 17:21 1655QeePHP 是一个快速、灵活的开发框架。应用各种成熟的架构 ... -
swiftmailer 的快捷助手 qser-mailer
2014-09-09 23:52 3542近日在对charsen的修改版上进行了再次的修改与调整,对 ... -
PHP 中简单的伪造IP刷票实现
2014-05-15 17:06 2675一般而言,我们的获取用户真实ip的代码大致是这样... / ... -
PHP5.5 htmlspecialchars 返回null的坑
2014-04-25 12:23 2561昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取 ... -
PHP 5.5 empty + 魔术变量 的坑
2014-04-16 15:53 1554今天在测试代码时遇到这么一个疑问? dump((in ... -
Aert_Log: 设计一个精简易用的日志
2014-04-13 18:28 2403日志记录对于应用的 ... -
创建一个简单的短链服务类
2013-07-01 18:20 1317整理一个简单的短链算法,整理到自己的代码库中: &l ... -
收集常用的PHP简单代码
2013-06-30 17:53 2002对于日常工作中整理出来的某些功能做个简单梳理: 1 ... -
简易PHP路由,支持正反向url解析支持
2013-06-21 22:23 8162几年前实现了一个简单的正向路由,那时候不会写反向路由解析, ... -
系统学习のCACHE 学习
2012-11-21 13:58 1839http://www.phpfans.net/article/ ... -
YY 下 sql查询封装类 不知道好不好使
2012-07-18 16:44 1282<?php class Pkg_Db_Actor { ... -
抽取个sql生成器工具 -- 摘自 fuelphp1.1 版本
2012-04-25 20:17 1180<?php /** * Sql 创造者类 * ... -
关于网站多语言机制的实现的原型demo
2012-04-21 19:12 1935先发个demo ..... 需求 能够在前台下载 语言文件进 ...
相关推荐
后台返回菜单无限层级展示
本人在做管理后台事用到了左侧的导航列表,但是管理后台进来的菜单是根据不同账户的权限,显示不同的菜单。这时候需要动态的渲染左侧的列表。但是1.0版本只是更新到2级菜单,不满足如下图的3级菜单需求,只能自己...
<li id="left_tab1" title="操作菜单" onClick="javascript:border_left('left_tab1','left_menu_cnt1');">人事</span></li> <div id="left_menu_cnt1" class="left_menu_cnt"> <ul id="dleft_tab1"> ...
后台基础的setting配置(支持文本、下拉菜单、日期选择、文件等类型)和menu配置,弹窗小部件等 RBAC简单的权限控制,用户选择角色,角色再包含权限,角色、权限不能自我嵌套,否则想不出好的展示方式 restful api相关...
2、新增CU3ER官网flash 3D焦点图,可以通过后台上传后设定好属性后台生成XML文件,展示不同的风格 3、新增后台后上传设置背景图片, 4、新增后台设置网站背景颜色 5、新增背景判断,背景为空时则显示默认背景,有...
最近在用 iview-admin的Vue后台模板,从git上下载后发现左侧导航栏最多支持到二级菜单,也发现很多童鞋在问如何实现三级菜单。在实际的应用场景中还是会出现三级菜单的需求的,木有其他好办法,只能自己手动改代码了...
Yii2开发的后台管理系统 用Yii2.0.0开发的后台管理系统.通过RBAC控制不同用户的菜单显示以及权限。...运行yii migrate导入菜单表t_menu和用户表t_admin_user 运行yii migrate --migrationPath=@yii/rbac/migrati
本站是利用关东人控件2.0版本,开发而成 1、根目录下的所有静态页都是后台自动生成的,在...8、后台的右边的菜单,在数据库里面c_menu里面可以设置菜单是否显示 更多问题,咨询http://www.guandongren.comQQ:359000335
网上这本书的电子版不好这,这是用money换来的...20.11.7 后台管理模块的业务逻辑处理类CtrlAdmin 393 20.12 项目发布与执行 397 20.13 本章小结 397 第21章 新闻管理系统(Struts+Hibernate) 398 21.1 系统需求分析与...
*********************************************************************************** 默认的管理员用户名是:admin ,密码和验证码都是... 管理员在后台修改,改了后,再点“JS 生成”就好了
b、定制菜单:默认菜单是配置文件配合js生成的,配置文件在 configs/mainmenu.php,js是sctipts/menu.js。用户可以用自己的菜单代码,直接写道theme.html里面,然后后台的系统定义里面选择不使用系统菜单,这样可以...
b、定制菜单:默认菜单是配置文件配合js生成的,配置文件在 configs/mainmenu.php,js是sctipts/menu.js。用户可以用自己的菜单代码,直接写道theme.html里面,然后后台的系统定义里面选择不使用系统菜单,这样可以...
b、定制菜单:默认菜单是配置文件配合js生成的,配置文件在 configs/mainmenu.php,js是sctipts/menu.js。用户可以用自己的菜单代码,直接写道theme.html里面,然后后台的系统定义里面选择不使用系统菜单,这样...
使用vue element-ui框架构建公共导航栏...1.先确认自己在route.js 或者 main.js 中有没有使用 路由守卫vue.beforeEach和vue.addRouters() 促使页面每次刷新,重新根据后台返回数据生成动态路由,就
36、修复admin/KS.ClassMenu.asp文件错误 生成的菜单重复 37、修复生成静态时相关商品标签出错,无法解释 38、修复前台投稿的文章,审核后文章生成的文件名都变成了id.html. 39、修复友情链接太多时,后台看不到翻页...
自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 ...
自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 ...
自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 ...
自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 ...