Я хочу проверить ввод формы, прежде чем сохранять ее в базу данных, чтобы предотвратить Sql Injection и XSS.drupal validate form
Я не хочу изменять код модуля напрямую, поэтому я создал настраиваемый модуль для создания такого рода материалов, но я не совсем уверен, как использовать элемент #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';
Я думал, что просто добавив форму [ '# Validate'] будет работать несмотря на содержимое переменной $ form, но кажется, что в зависимости от реализации модуля, если вы не поместите элемент #validate, где он ожидается, он игнорируется.
Вы пробовали передать функцию проверки без массива? '$ form ['# validate'] = 'my_validation_function';' – DrColossos
@DrColossos Я пробовал, но все равно не повезло –