Есть многошаговая форма для многошагового создания ноды определенного типа "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'])ничего не возвращается?
Спасибо
Комментарии
Наверно потому-что $form_state['values']['clicked_button']
Нет - здесь похоже нет ошибки.
По крайней мере в функции submit
drupal_set_message('name: '.$form_state['clicked_button']['#name']);
возвращает название кнопки, а в функции валидации - ничего не возвращается
Функция mytype_validate(hook_validate) принимает в качестве 2 параметра массив $form, а не массив $form_state.
Так как же тогда проверить какая кнопка была нажата?
Задача простая - по кнопке назад валидация выполняться не должна.
Нужно писать отдельную "пустую" функцию валидации для кнопок назад на всех страницах?
Что бы получить доступ к переменной $form_state, вам нужно в форме определить свою функцию валидации указав её в параметре формы #validate.
В результате при валидации формы будет вызываться ваша функция вместо hook_validate.
Вообщем получилось только сделав отдельные функции валидации для каждого шага, повесил валидацию только на нужные кнопки.