我想在將表單保存到數據庫之前驗證表單的輸入,以防止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