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版本:

3 info文件

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们来看一下,最初的代码,这是info文件的:

Drupal版本:

2 Field validation的Alpha1版

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
​我在hook_field_attach_validate的实验成功以后,便开始寻求更一般的解决办法了。当时章林已经使用form_alter解决这个问题了,我同时也告诉了他在Drupal7下面,可以采用hook_field_attach_validate来解决这样的问题。如果仅仅是为了满足项目的需要,这个问题就可以这样结束了。每当我们遇到字段验证的时候,套用已有的代码,改造改造就可以了。

Drupal版本:

页面

Subscribe to Think in Drupal RSS