2009-02-21 7 views
1

На моем сайте drupal6 у меня есть волшебная форма. Я реализовал его с помощью FormAPI, используя хранилище форм и свойство rebuild. Моя проверка формы выполняется с использованием свойства #required и с функциями в свойстве #element_validate. Он работает нормально, но, во-первых, когда я нажимаю на предыдущую кнопку, форма проверяется, и я не хочу этого делать. Есть ли разумный и правильный способ отключить проверки при нажатии на конкретную кнопку формы?Форма мастера Drupal: подтверждение и предыдущая кнопка

ответ

1

Единственный способ сделать это чисто (к сожалению) состоит в том, чтобы избежать использования #required = TRUE и проверить его самостоятельно в обработчике проверки, принимая во внимание знание того, что означает «шаг» формы в процессе мастера ,

Один общий подход состоит в том, чтобы накапливать все ваши данные в процессе в $ form_state ['storage'], где он будет сохраняться между перестройками.

+0

Спасибо. Я использую $ form_state ['storage']. К сожалению, мне нужно будет сделать то, что вы сказали, и выполнить требуемую функцию проверки, а затем проверить там, если пользователь нажал предыдущую кнопку и не подтвердил правильность. –

1
// hack to clear validation errors during wizard processing 
    form_set_error(NULL, FALSE, TRUE); 
    unset($_SESSION['messages']['error']); 
1

Ответ Кевина работает. Вы также можете попробовать http://drupal.org/project/skip_validation, где вы хотите добавить дополнительное свойство к своей предыдущей кнопке, '#skip_validation' => TRUE