[решено]Проблема при валидации формы

Главные вкладки

Аватар пользователя Positiff Positiff 5 марта 2011 в 18:23

Есть многошаговая форма для многошагового создания ноды определенного типа "mytype":
mytype_form($node, &$form_state)
Которая в зависимости от значения текущего шага вызывает функции построители для 2,го и 3-го шага
mytype_form_page_2($node, &$form_state)
mytype_form_page_3($node, &$form_state)
Функция отправки
mytype_form_submit($node, &$form_state)

Функция валидации формы(одна для всех шагов) :
mytype_validate($node, &$form_state)
Вопрос почему при попытке получить значения из $form_state внутри этой функции валидации (например $form_state['clicked_button']['#name'])ничего не возвращается?

Спасибо

Комментарии

Аватар пользователя Positiff Positiff 8 марта 2011 в 19:12

Нет - здесь похоже нет ошибки.
По крайней мере в функции submit
drupal_set_message('name: '.$form_state['clicked_button']['#name']);
возвращает название кнопки, а в функции валидации - ничего не возвращается

Аватар пользователя Positiff Positiff 9 марта 2011 в 0:31

Так как же тогда проверить какая кнопка была нажата?
Задача простая - по кнопке назад валидация выполняться не должна.
Нужно писать отдельную "пустую" функцию валидации для кнопок назад на всех страницах?

Аватар пользователя rbogdan@drupal.org rbogdan@drupal.org 9 марта 2011 в 11:39

Что бы получить доступ к переменной $form_state, вам нужно в форме определить свою функцию валидации указав её в параметре формы #validate.

В результате при валидации формы будет вызываться ваша функция вместо hook_validate.

Аватар пользователя Positiff Positiff 9 марта 2011 в 20:03

Вообщем получилось только сделав отдельные функции валидации для каждого шага, повесил валидацию только на нужные кнопки.