You are here

37 beta3版

admin 的头像
Submitted by admin on 星期六, 2015-09-19 03:21

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

两周后,我又增加了5个验证器,同时修正了一个bug,发布了beta3。这5个验证器分别为:

•Minimum number of selections required(适用于复选框、下拉选择框,最小选中多少项)

•Maximum number of selections allowed(适用于复选框、下拉选择框,最多选中多少项)

•Exact number of selections required(适用于复选框、下拉选择框,只能选中多少项)

•Unique(唯一性验证)

•Match another field(or entity property)(比如匹配一个字段或者一个属性)

在唯一性验证的代码里面,首先,我们检查这个字段当前的值数组里面,是否有重复的,如果没有的话,通过查询数据库,看数据库里面是否存在重复的,如果有重复的,表示不唯一,否则表示字段值是唯一的。如果我们的当前表单是编辑表单,我们在查询数据库的时候,还需要把当前实体排除在外。注意,用户编辑页面,通过entity_extract_ids获取不到用户的ID,不知道现在Drupal核心修正了这个bug没有,所以我单独的为它写了一个判断语句。

以前人们经常使用unique field模块,来验证字段的惟一性,现在有了Field ValidationUnique验证器,基本上就可以取代这个模块了,而且Field Validation支持所有的实体类型。unique field模块仅支持节点类型。

验证器匹配一个字段或者一个属性也使用了EntityFieldQuery,我对这种查询方式的喜欢,可能就是从编写这两个验证器开始的,在这里我发现了EntityFieldQuery的强大。如果使用db_select,也能够实现同样的功能。但是就会比较麻烦,代码的可读性也不高。


Drupal版本: