desktop开发指南
desktop简介
- desktop是基于base的一个独立的app。
- 通俗的讲desktop就是后台管理系统。
- desktop还有以下特点:
- 安装desktop后,访问后台,会出现如下登录界面:
desktop.xml说明
- desktop.xml是后台菜单“显示”文件。
- 装了desktop这个app,就能识别其他app目录下的desktop.xml文件。
- 这个文件必须列出所有后台看见或看不见的控制器,否则除非是超级管理员,任何其他非超级管理员desktop用户无法访问这些控制器。
- desktop.xml的基本结构是如下:
<desktop> <panelgroup id="other" icon="panel-other.png" order="100">其他</panelgroup> ... <adminpanel group="desktop_other" permission="other" controller='admin_member_attr' action='index' display='true'>会员注册项</adminpanel> ... <permissions> <permission id="shipment" display='true'>配送设置</permission> ... </permissions> <workground name="商品" id="b2c.wrokground.goods" controller="admin_goods" action="index" order="20"> <menugroup name="商品管理"> <menu controller='admin_goods_editor' action='add' permission='goods' display='false' order='10'>添加商品</menu> ... </menugroup> ... </workground> ... </desktop>
- desktop.xml不一定包含上面的所有标签,在符合语法规则的前提下,可以根据自己的需求任意增减标签。
- 语法规则以及各个标签和标签属性含义如下:
desktop
每个 desktop.xml 的根标签
panelgroup
控制面板里的组其属性含义如下:
-
-
id:
控制面板里组的唯一标识 -
icon:
控制面板里组的图标,路径默认的起点是app下的static,假如此desktop.xml是desktop这个app的,则图标的路径会自动解析成/app/desktop/static/panel-other.png -
order:
组的显示顺序
-
adminpanel
控制面板里的项其属性含义如下:
-
-
group:
指属性那个控制面板组,其值是panelgroup的id属性值加app前缀,例如group="desktop_other" -
permission:
指此控制面板里的项属性那个权限(下面讲到权限) -
controller:
controller和action(构成点此控制面板项时的去处,如果action属性未写则默认值为index) -
action:
controller和action(构成点此控制面板项时的去处,如果action属性未写则默认值为index) -
display:
是否显示在控制面板组里,true为显示,false为不显示
-
-
permissions
权限被包括在它里面
-
permission
包含在permissions标签里,每一个都是一个权限其属性含义如下:
-
-
id:
权限的唯一标识,全局唯一 -
display:
新建角色时,是否显示在角色权限列表里,true为显示,false为不显示
-
workground
可以包含多个menugroup,看下【desktop图例】其属性有:
-
-
name:
【1区】显示出来的label -
id:
(workground的唯一标识) -
controller:
构成点此workground tab时的去处,如果action属性未写则默认值为index -
action:
构成点此workground tab时的去处,如果action属性未写则默认值为index -
order:
此workground在tab列表中的排序
-
menugroup
可以包含多个menu
,看【desktop图例】 【2区】
menu
看【desktop图例】为【3区】提供菜单,除了拥有跟workground一样的属性外,此标签还有另外三个属性:
permission:
权限,为标签permission里的id属性的值
display:
是否显示,有些控制器里的方法是不必显示成菜单的,比如得到post数据保存商品的控制器等,这时需把display设成false的
params:
在url中传值,菜单上的访问链接将加上params的参数例如:
<menu controller="admin_notebook" action="index" params="view:1|schema:2">留言编辑列表</menu> 点击留言编辑列表 得到的URL地址为: http://localhost/book/index.php/shopadmin/#app=notebook&ctl=admin_notebook&act=index&view=1&schema=2
desktop图例
- 一个典型的desktop的列表页包含了哪些内容,如下图所示:
接下来我们看各个区里的内容是如何增删及展示出来的
- 【1、2、3区】都是根据app下的
desktop.xml
产生,如何填充,可以参照desktop.xml的介绍试试看 - 【5区】顶部菜单产生是靠往服务id为desktop_menu里注册服务实现
在service.xml
里添加
<service id="desktop_menu"> <class>b2c_service_view_menu</class> </service>
b2c_service_view_menu
内容如下
class b2c_service_view_menu{ function function_menu(){ $shop_base = app::get('site')->router()->gen_url(array('app'=>'site', 'ctl'=>'default')); $html[] = "<a href='$shop_base' target='_blank'>浏览商店</a>"; return $html; } }
说明:desktop_menu
的服务,必须定义名字为function_menu的方法,它的返回值即为【5区】的菜单项
4区finder详细解释
finder说明:
- 下面对finder各个区的内容的来龙去脉做解