13 field_validation_field_validation_validators

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

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
field_validation_field_validation_validators是一个钩子函数,实现的就是我们自己定义的钩子hook_field_validation_validators,它类似于hook_menu,返回的是一个数组,在这个数组里面,可以定义多个验证器,我们这里只定义了一个regex,正则表达式。在单个验证器数组里面,它包含5个键,name、component_types、custom_error、custom_data、description。都是直接来自于webform_validation

Drupal版本:

10 field_validation_field_delete

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
field_validation_field_delete是hook_field_delete的钩子实现,这段代码的作用是,当删除一个字段时,删除字段上面的验证规则。这里面用到的field_dynamic_delete_rule函数,命名不符合Drupal的规范,最好命名为field_validation_dynamic_delete_rule。field_validation_field_delete和field_dynamic_delete_rule的名字也都是来源于webform_validation的。在webform_validation里面,使用的钩子函数是hook_node_delete,当一个节点被删除时,删除节点上面的验证规则,其实我觉得webform_validation里面应该检查一下这个节点的类型是不是webform形式的,不是的话直接跳过,这样效率会更高一点。

Drupal版本:

9 field_validation_theme

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
​field_validation_theme这个钩子函数,是直接从webform_validation_theme抄袭过来的,里面注册的主题函数,也是改了一下名字而已。theme_field_validation_manage_add_rule,这个主题函数,也是重命名过来的,但是函数里面的内容,我做了稍微的调整,其实这个函数只在管理界面用到,放到field_validation.admin.inc文件里面更合适一点。因为theme_field_validation_manage_overview也是放在field_validation.admin.inc里面的。theme_field_validation_manage_add_rule里面有两段代码值得学习,一个是获取当前路径:

Drupal版本:

8 field_validation_menu

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
field_validation_menu里面,最上面的那段代码,是我从field_ui模块里面复制过来的,最后实现UI的时候,考虑到字段的配置,它的路径不是固定的,不同实体类型的路径是不同的,而我的验证规则,是追加到字段上面去的,所以只好从field_ui模块复制代码。如果让我自己写,我是写不出来的。这里只需要理解就可以了,知道这段代码的出处。通过Hook_menu,我们为每个字段提供了一个验证概览页面,一个验证规则的添加页面,一个验证规则的编辑页面,还有验证规则的删除页面。除了这里的路径是动态的以外,并不比我们见到的其它菜单项复杂。

Drupal版本:

7 include_once

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
最上面的两个include_once,用来将文件field_validation.validators.inc和field_validation.rules.inc加载进来,当加载field_validation.module文件的时候,就会自动的加载这两个文件。为什么要把它分成多个文件呢?这样做唯一的好处就是,逻辑更清楚一点,比如field_validation.validators.inc只放置验证器的定义。它并不能实现缓加载,也并不能提升性能。如果我们把field_validation.validators.inc里面的函数,直接放到module文件中,效果是一样的。很多模块都采用这种方式,或许有的人认为,它能够实现缓加载,但是实际是不行的。

Drupal版本:

6 field_validation_field_attach_validate

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
这里面,最先实现的是field_validation_field_attach_validate,在这个钩子函数中,alpha1版本里面包含两大段注释代码,最下面的那段注释代码,就是我最初测试hook_field_attach_validate所用到的代码,在这个版中还保留着,幸好还保留着,这样可以留下一个成长的轨迹。最上面那段注释里面的代码,是最初的实现代码。把它的格式整理一下:

Drupal版本:

页面

Subscribe to Think in Drupal RSS