我想在将表单保存到数据库之前验证表单的输入,以防止Sql Injection和XSS。drupal验证表单
我不想直接修改模块的代码,所以我创建了一个自定义模块来完成这种工作,但我不确定如何使用#validate元素来调用验证功能。
在我的自定义模块,我有这样的逻辑来实现这一功能:
function mymodule_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'myform':
drupal_set_message('this message is printed :D');
$form['#validate'] = array('my_validation_function');
break;
}
}
function my_validation_function($form, &$form_state) {
drupal_set_message('not printed :(');
watchdog('not printed :___(', 'not printed :___(');
}
我不知道它究竟是如何工作的,但看来,当我提交表单的第二功能不会被调用。
EDIT(液):
我终于找到地方,验证被放置在模块中:
$form['mod_name']['submit']['#validate'][] = 'my_validation_function';
我以为只是添加形式[ '#验证']会工作尽管有$ form变量的内容,但似乎取决于模块的实现,如果您没有将#validate元素放置在期望的位置,它将被忽略。
您是否尝试过传递无数组的验证函数? '$ form ['#validate'] ='my_validation_function';' – DrColossos 2010-11-16 16:28:17
@DrColossos我已经尝试过了,但仍然没有运气 – 2010-11-16 17:13:54