Вам необходимо использовать #element_validate
для передачи обработчика проверки для каждого элемента или $form['#validate']
для добавления обработчика проверки в форму. Вот почему это не работает.
EDIT:
Другая причина, почему это не работает для вас, заключается в том, что вы неправильно реализовали хук. Для ловушки hook_form_FORM_ID_alter
вам необходимо заменить hook
на имя вашего модуля и FROM_ID
на идентификатор формы.
Пример:
function my_module_form_intro_form_alter(&$form, &$form_state) {
$form['#validate'][] = 'my_module_form_validation_handler';
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#description' => t('The title you enter here appears on the page.'),
'#size' => 40,
'#maxlength' => 255,
`#element_validate` => array('my_module_element_validation_handler'),
);
}
При выполнении вышеизложенного функция my_module_form_validation_handler
будет вызываться для всей формы, а my_module_element_validation_handler
- для элемента формы title
.