You are here

2 配置property validation验证规则

admin 的头像
Submitted by admin on 星期四, 2015-09-17 02:23

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

集成property validation,和集成Field validation的过程其实是一样的。首先是我们在后台配置验证规则,然后将其导出成代码,这和后面所讲的将Views的代码导出,是一样的。

启用Property validation模块以后,导航到admin/structure/property_validation

图片1.png 

这是CtoolsExport UI提供的一个默认界面,Property validation模块自带了一个验证规则title_min_words。我们这里添加两个验证规则,具体配置如下:

唯一性验证规则:

Name(机读)

breadcrumb_path_unique

Rule Name(用户可读)

Breadcrumb path unique

Entity type

Breadcrumb

Bundle name

Breadcrumb

Property name

path

Validator 

Unique values

Scope of unique

Entity

Custom error message

Breadcrumb path should be unique.

URL有效性验证规则:

Name(机读)

breadcrumb_path_valid_path

Rule Name(用户可读)

Breadcrumb path valid path

Entity type

Breadcrumb

Bundle name

Breadcrumb

Property name

path

Validator 

URL

Internal path

选中

Custom error message

Breadcrumb path should be a valid path.

现在,我们通过breadcrumb/add,添加面包屑,发现验证规则不起作用,比如第一次将path输入为“node/1”,第二次还是输入“node/1”,唯一性验证不起作用。此外,输入一个不存在的路径,比如“admin1”,还是可以直接保存。但是编辑的时候就会报错。经检查,并不是,property validation模块的问题,而是我们自己这里代码写的有问题。我们对breadcrumb2.admin.inc文件里面的breadcrumb2_form_validate函数,做以下修改:

 

function breadcrumb2_form_validate($form, &$form_state) {

  $breadcrumb = $form_state['breadcrumb'];

  $breadcrumb->path = $form_state['values']['path'];

  

  // Notify field widgets to validate their data.

  field_attach_form_validate('breadcrumb2', $breadcrumb, $form, $form_state);

}

粗体字部分,为我们新增的代码。我们把$breadcrumb对象存储在了$form_state['breadcrumb']里面,但是这里的值,都是旧的,我们这里验证的时候,需要将属性的值重新设置一下。field_attach_form_validate能够自动的提取当前字段的值,对于属性的值,我们需要单独的设置。这就是粗体字代码的含义。

修正这个错误以后,重新测试,现在这两个验证规则,都起作用了。唯一不足的时候,URL支持的内部路径,没有将别名排除出去,不过这个影响不大。


Drupal版本: