В Drupal 6.20 я создаю функцию, которая создает многостраничную форму (my_form_process). На одной странице пользователь может выбрать из списка ранее созданных адресов или создать новый. Если пользователь хочет создать новый, я использую javascript и CSS, чтобы скрыть выборки и показать форму адреса (адрес, почтовый индекс города и т. Д.). Чтобы убедиться, что пользователь предоставляет необходимые данные, у меня есть функция проверки (my_form_process_validate), которая устанавливает ошибку, если поля не заполнены. Проблема заключается в том, что когда страницы не проходят проверку, my_form_process перерисовывает форму с ошибками проверки, но по умолчанию возвращается к «выбрать из списка ранее созданных адресов», а «создавать новые» элементы формы с ошибками по-прежнему скрытый.
Как я могу сказать my_form_process, который строит форму, когда проверка не удалась, показать «создать новый» div и скрыть «выбрать старый» div? Я попытался установить переменную $ form ['storage'], но my_form_process, похоже, ее не видит.
Вот еще немного информации:
Я попытался добавить $ form_state ['validation_status'] = 'error' в процедуру проверки, но все же обнаружил, что это значение отсутствует в массиве $ form_state, используемом в функции формы при обнаружении ошибки.
Однако, когда не было ошибки, значение было доступно. (подсказка)
Итак, просто ради пинка я удалил строку "form_set_error" из процедуры проверки, и теперь значение доступно.
Итак, теперь я должен установить
$form_state['validation_error'] = '<ol>';
$form_state['validation_status'] = 'error';
$form_state['validation_error'] .= '<li>' . t('address cannot be blank') . '</li>';
$form_state['validation_error'] .= '</ol>';
Затем в функции формы я могу проверить $ form_state ['validation_error'] и, если 'error', тогда использовать
drupal_set_message($form_state['validation_error'],$form_state['validation_status']);
Чтобы отобразить сообщение, а затем соответствующим образом установить свойство отображения div.
Конечно, похоже на ошибку в процессе "form_set_error", но я новичок в Drupal / PHP, поэтому я не совсем уверен, что я делаю.