14 field_validation_field_validation_validate

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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
field_validation_field_validation_validate这也是一个钩子函数的实现,。这里面包含了验证器的验证规则。当传递过来的数据没有通过正则验证时,我们返回一个包含错误信息的数组。这个错误消息,应该通过引用传递的,但是module_invoke_all不支持引用传递。所以只好这样变通一下

Drupal版本:

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

页面

Subscribe to Think in Drupal RSS