• 快速联动
    • addLinkages('name值', '标题', '提示', '表名', '级别数量' [, '默认值', '字段名'])" level="2">addLinkages('name值', '标题', '提示', '表名', '级别数量' [, '默认值', '字段名'])
      • 依然来个小栗子" level="3">依然来个小栗子
      • 默认值" level="3">默认值
      • 字段名" level="3">字段名

    快速联动

    addLinkages('name值', '标题', '提示', '表名', '级别数量' [, '默认值', '字段名'])" class="reference-link">addLinkages('name值', '标题', '提示', '表名', '级别数量' [, '默认值', '字段名'])

    标识符:linkages

    参数含义类型
    namename值string
    title标题string
    tips提示string
    table表名string
    level级别数量string
    default默认值string
    fields字段名array/string

    快速联动比普通联动多了个“s”,但它可以让联动操作更方便快速,它只需要配合数据库而不用自己编写返回方法。

    依然来个小栗子" class="reference-link">依然来个小栗子

    首先,我们需要创建一张表,用来读取联动数据。

    1. CREATE TABLE `dp_test` (
    2. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    3. `name` varchar(32) NOT NULL,
    4. `pid` int(11) NOT NULL,
    5. PRIMARY KEY (`id`)
    6. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    7. INSERT INTO `dp_test` VALUES ('1', '广东', '0');
    8. INSERT INTO `dp_test` VALUES ('2', '江西', '0');
    9. INSERT INTO `dp_test` VALUES ('3', '广州', '1');
    10. INSERT INTO `dp_test` VALUES ('4', '深圳', '1');
    11. INSERT INTO `dp_test` VALUES ('5', '河源', '1');
    12. INSERT INTO `dp_test` VALUES ('6', '赣州', '2');
    13. INSERT INTO `dp_test` VALUES ('7', '白云区', '3');
    14. INSERT INTO `dp_test` VALUES ('8', '越秀区', '3');
    15. INSERT INTO `dp_test` VALUES ('9', '南山区', '4');
    16. INSERT INTO `dp_test` VALUES ('10', '江夏村', '7');

    数据表不一定是test,任何表都可以,只要在表中包含三个字段idnamepid,相信这三个字段在一般有层级关系的数据表中都会有。当然,字段名是可以自定义的。

    有了数据表后,就可以使用快速联动了。

    1. return ZBuilder::make('form')
    2. ->addLinkages('city', '选择所在城市', '', 'test')
    3. ->fetch();

    效果:

    快速联动 - 图1

    默认是2级联动,也可以是3级,4级,目前最多支持4级联动,再多好像也没什么必要。

    设置为3级联动

    1. return ZBuilder::make('form')
    2. ->addLinkages('area', '选择所在地区', '', 'test', 3)
    3. ->fetch();

    效果;

    快速联动 - 图2

    注意:快速联动只能设置一个name值,也就是说,不管是几级联动,都只保存最后一项的数据。

    默认值" class="reference-link">默认值

    可以在设置快速联动时给默认值,比如:

    1. return ZBuilder::make('form')
    2. ->addLinkages('area', '选择所在地区', '', 'test', 3, 8)
    3. ->fetch();

    8是指数据表中“越秀区”的id,它是第三级的数据,如果设置的快速联动是3级,而默认值是2级的id或4级的数据,则会报错。

    字段名" class="reference-link">字段名

    默认情况下,快速联动会去寻找表中的三个字段idnamepid。其中,id是指表中的主键字段,name是下拉菜单显示的名称,pid是父级id。

    如果您的数据表中不是这三个字段名,那么可以修改字段名,比如实际上数据表的主键是aid,标题是title,那么就可以这么定义。

    1. return ZBuilder::make('form')
    2. ->addLinkages('area', '选择所在地区', '', 'test', 3, '', 'aid,title')
    3. ->fetch();

    注意:如果使用字符串重新定义字段名,则必须按顺序定义,默认顺序是id,name,pid,不能定义为title,aid

    用数组的方式重新定义字段名,前后顺序可以随意。

    1. return ZBuilder::make('form')
    2. ->addLinkages('area', '选择所在地区', '', 'test', 3, '', ['name' => 'title', 'id' => 'aid'])
    3. ->fetch();