如何解决Drupal CCK字段未使用hook_nodeapi验证
| 我正在尝试对Drupal CCk中的链接字段进行自定义验证。 我当前正在使用链接贡献模块。 所以在我的hook_nodeapi和案例验证 请注意,此值接受无限值,因此存在foreach。case \'validate\':
if ($node->type == \'flow\')
{
foreach ($node->field_post_twitter as $twitter_v)
{
$pattern = \'/(http|https|ftp):[\\/]{2}twitter\\.com/i\';
if (preg_match_all($pattern,$twitter_v[\'url\']))
{
form_set_error(\'not working\');
}
}
}
break;
但是它没有验证,而如果我把它放在普通的php文件中,它确实可以工作。
关于我缺少什么的任何想法?
谢谢
解决方法
您应该使用hook_form_alter更改当前表单的验证数组,并将其添加到此数组自定义验证函数中。
function mymodule_form_alter(&$form,&$form_state,$form_id){
switch($node->type){
case \'test_node_form\':
$form[\'#validate\'][] = \'my_custom_validate\';
break;
}
}
function my_custom_validate($form,&$form_state){
$values = $form_state[\'values\'];
if(/* conditions */){
$message = t(\'Oops!\');
form_set_error(\'\',$message);
}
}
,尝试将数据库中“ѭ2”表中模块的权重设置为最高,以使钩子最后被调用,并且所有CCK字段-包括(field_post_twitter)可能尚未填充的情况都已填充。
毕竟不要忘记清除缓存(drush cc)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。