[英]drupal validate form
我想在將表單輸入保存到數據庫之前驗證表單的輸入,以防止Sql Injection和XSS。
我不想直接修改模塊的代碼,所以我創建了一個自定義模塊來執行此類操作,但是我不確定如何使用#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 :___(');
}
我不知道它是如何工作的,但是當我提交表單時,似乎從未調用過第二個函數。
編輯(解決方案):
我終於找到了驗證在模塊中的放置位置:
$form['mod_name']['submit']['#validate'][] = 'my_validation_function';
我以為,盡管$ form變量中包含了內容,但僅添加form ['#validate']還是可以的,但是如果您不將#validate元素放置在期望的位置,則似乎取決於模塊的實現,它會被忽略。
請小心替換#validate密鑰,因為您將替換之前已添加的任何其他驗證器。
最好在其上附加功能;
$form['#validate'][] = 'my_validation_function';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.