0%

weiphp前台用户管理添加界面模型管理进阶

本部分内容概要

  1. 布尔 (bù ěr) 单选 (dān xuǎn) 多选 (duō xuǎn) 枚举 (méi jǔ)
    1. 参数设定
    2. 展示样式
  2. 级联 (jí lián)
    1. 级联相关代码
    2. 级联实现原理

布尔,单选,多选,枚举 如何设置属性

这几个是最简单的只需要在参数字段设置

1
2
1:优先
0:普通

系统自动会将这个进行解析,形成一个一维数组,

1
2
3
4
[
1=>'优先',
0=>'普通'
]

布尔展示效果

单选展示效果

多选展示效果

枚举展示效果

更高级的来了

参数设置

1
table=weiba_category&value_field=id&title_field=name

这是什么鬼? 其实这个就是一个数据获取 从weiba_category表中获取idname两个字段,id作为值,name作为显示名。

动态下拉菜单展示

动态多选菜单展示

数据说明

上面图中 数据来源自分类栏目用户自己添加的数据。这就是参数设置中的那三个的妙用了。

级联

为什么单独说

我也不清楚级联怎么用,也没见过官方用过。所以现在只能扒代码,如果真的像是省市县联动这样的那就好极了。

级联的定义和模版相关代码

级联在模型管理中定义的字段值为cascade.
模版中是这样做的

1
2
3
<case value="cascade">
<div id="cascade_{$field.name}"></div>
{:hook('cascade', array('name'=>$field['name'],'value'=>$field['value'],'extra'=>$field['extra']))} </case>

级联实现原理

通过上面的模版源码 我们可以看到级联的实现,使用了一个叫做cascade的插件(plugins)。地址是/Plugins/Cascade/CascadeAddon.class.php。通过查看源码我们发现这个是有示例的。

  1. db方式

    1
    type=db&table=common_category&module=shop_category&value_field=id&custom_field=id,title,pid,sort&custom_pid=0
  2. text方式

    1
    type=text&data=[1:广西[2:南宁,3:桂林],4:广东[5:广州,6:深圳[7:福田区,8:龙岗区,9:宝安区]]]

在通过{:hook('cascade', array('name'=>$field['name'],'value'=>$field['value'],'extra'=>$field['extra']))}挂载执行后,最后将我们在模型管理中填入的字符串解析为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"a": "4",
"t": "广东",
"d": {
"0": {
"a": "6",
"t": "深圳",
"d": {
"0": {
"a": "9",
"t": "宝安区"
},
"1": {
"a": "8",
"t": "龙岗区"
},
"2": {
"a": "7",
"t": "福田区"
}
}
},
"1": {
"a": "5",
"t": "广州"
}
}
}

这个json最后会放入一个叫做json2selectjquey插件中执行。
最后生成这样的效果

db方式来讲一下各个字段的定义

'type' => 'db', 定义级联数据类型为数据库获取方式
'table' => 'common_category', 定义数据获取的表
'module' => 'shop_category', 定义所属模块,没见到hook方法中有这个东西的使用
'value_field' => 'id',定义值来自哪个字段
'custom_field' => 'id,title,pid,sort',定义sql查询的时候读取哪些字段 注意这里的pidsort在表中必须要有,不然 级联就会报错,因为强制定义了 pid asc,sort asc 排序
'custom_pid' => 0 定义最顶级fid的值

后续可能会对cascade进行更改形成自己的自定义插件

总结

通过这里我们可以按照这个字段进行表设计,这样就可以直接用级联了。当然我们可以自己自定义这个东西,关于字符串方式,还是减少使用的好除非你生成一个这样的文件,保存起来,不然的话省市区三级联动有可能数据量太大。

update 2017-02-08

如何给weiphp动态下拉菜单设置默认选中值

只需要在响应的控制器中设置一个数组$data

1
2
$data=['fieldname'=>'fieldvalue'];
$this->assign('data',$data);

这样就会在新增内容的时候默认选中了

  • Post author: hainuo
  • Post link: weiphp_view_add_more
  • Copyright Notice: All articles in this blog are licensed under BY-NC-ND unless stating additionally.