1.1 Schema特有的定义

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

我们来看一下,Field validation的实现,首先是schema的变动:

function field_validation_schema() {

  $schema['field_validation_rule'] = array(

    'description' => 'Stores rule definitions',

    'export' => array(

      'key' => 'name',

      'key name' => 'Name',

      'primary key' => 'ruleid',

      'identifier' => 'rule', 

      'default hook' => 'default_field_validation_rule',

      'api' => array(

        'owner' => 'field_validation',

        'api' => 'default_field_validation_rules',

        'minimum_version' => 1,

        'current_version' => 1,

      ),

    ),

    'fields' => array(

      'ruleid' => array(

        'type' => 'serial',

        'description' => 'Unique identifier of the validation rule',

        'unsigned' => TRUE,

        'not null' => TRUE,

      ),

      'rulename' => array(

        'type' => 'varchar',

        'description' => 'Name of the validation rule',

        'not null' => TRUE,

        'default' => '',

        'length' => 255,

      ),

      'name' => array(

        'type' => 'varchar',

        'description' => 'Machine name of the validation rule',

        'not null' => TRUE,

        'default' => '',

        'length' => 32,

      ),

…..

    ),

  );

 

  return $schema;

}

    这里面有两处变化,一个就是为验证规则添加了一个机读名字,使用这个机读名字作为导入导出同步的唯一ID。这个大家都很好理解,对应代码如下:

      'name' => array(

        'type' => 'varchar',

        'description' => 'Machine name of the validation rule',

        'not null' => TRUE,

        'default' => '',

        'length' => 32,

      ),

另一处,就是添加了一个export键,它的值为一个数组:

'export' => array(

      'key' => 'name',

      'key name' => 'Name',

      'primary key' => 'ruleid',

      'identifier' => 'rule', 

      'default hook' => 'default_field_validation_rule',

      'api' => array(

        'owner' => 'field_validation',

        'api' => 'default_field_validation_rules',

        'minimum_version' => 1,

        'current_version' => 1,

      ),

    ),

   这个数组,所包含的键的含义,我们这里简单介绍一下用到的,其余没有用到的,可以参看Ctools的帮助文档,来看一下这里用到的:

 

key: 就是哪个字段是唯一键,在数据库中,导出的文件中,都是唯一的

key name:唯一键的用户可读名字

primary key: 就是主键,是一个数字ID,在数据库存储时用到。

identifier :标识符,导出的验证规则对象,它所在的变量

default hook :就是默认钩子,通过这个钩子,我们可以定义一个验证规则。

api:它下面包含4个键,owner,就是当前模块的名字;api,钩子,用来定义验证规则;minimum_version就是api的最小版本;current_versionapi的当前版本。


Drupal版本: