作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
这是field_validation.validators.inc文件的:
<?php
/**
* @file
* Provides validation functionality and hooks
*/
/**
* Implements hook_webform_validation_validators().
*
*/
function field_validation_field_validation_validators() {
return array(
'regex' => array(
'name' => "Regular expression",
'component_types' => array(
'textfield',
'textarea',
'email',
'hidden',
),
'custom_error' => TRUE,
'custom_data' => array(
'label' => t('Regex code'),
'description' => t('Specify regex code to validate the user input against.'),
),
'description' => t("Validates user-entered text against a specified regular expression. Note: don't include delimiters such as /."),
),
);
}
/**
* Implements hook_webform_validation_validate().
*/
function field_validation_field_validation_validate($validator_name, $items, $rule) {
if ($items) {
$error = array();
switch ($validator_name) {
case "regex":
mb_regex_encoding('UTF-8');
$regex = $rule['data'];
foreach ($items as $delta => $item) {
if ($item['value'] != '' && (!mb_ereg("$regex", $item['value']))) {
$error[$delta][] = array(
'error' => 'regex',
'message' =>$rule['error_message'],
);
//debug($errors);
}
}
return $error;
break;
}
}
}
…
function _field_validation_flatten_array($val) {
…
}
/**
* Get a list of validator definitions
*/
function field_validation_get_validators() {
$validators = module_invoke_all("field_validation_validators");
// let modules use hook_webform_validator_alter($validators) to change validator settings
drupal_alter('field_validator', $validators);
return $validators;
}
…….
function field_validation_get_validators_selection() {
….
}
……
function field_validation_valid_component_types($validator) {
…
}
….
function _field_validation_all_allowed($allowed) {
….
}
…
function field_validation_get_validator_info($validator_key) {
…
}
….
function _field_validation_i18n_error_message($rule) {
….
}
……
function _field_validation_check_false($var) {
……
}
….
function _field_numeric_check_data($data) {
….
}
这个文件里面,我知道的好像只有field_validation_field_validation_validators,field_validation_field_validation_validate,field_validation_get_validators是有用的。其它的大部分都是特定于webform_validation的,当时是一股脑的复制了过来的,然后一个一个的字符串替换。我们看到这里保留了大量的webform_validation的信息。