Как остановить проверку формы узла после AHAH - PullRequest
0 голосов
/ 02 апреля 2012

Я использую Drupal 6 и AHAH для настройки формы моего узла.Для ахах я использую этот код:

function mymodule_subtopic_type() {
    $output = '';

    $form_state = array('storage' => null, 'submitted' => false, 'rebuild' => true);
    $form_build_id = $_POST['form_build_id'];

    $form = form_get_cache($form_build_id, $form_state);

    $args = $form['#parameters'];
    $form_id = array_shift($args);
    $form_state['post'] = $_POST;
    $form['#post'] = $_POST;
    $form['#programmed'] = false;

    $form['#redirect'] = false;

    drupal_process_form($form_id, $form, $form_state);

    $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);

    $topic_form = $form['topic_wrapper'];
    unset($topic_form['#prefix'], $topic_form['#suffix']);
    $output .= theme('status_messages');
    $output .= drupal_render($topic_form);

    drupal_json(array('status' => TRUE, 'data' => $output));
}

Новые элементы формы отображаются нормально, но я получаю сообщения о состоянии:

  • Поле заголовка обязательно для заполнения.
  • Поле описания обязательно для заполнения.

Как остановить проверку после вызова ахах?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Решение от do: http://drupal.org/node/831900#comment-3124386

Добавьте эту функцию:

 function _ahah_helper_disable_validation(&$form) {
   foreach (element_children($form) as $child) {
     $form[$child]['#validated'] = TRUE;
     _ahah_helper_disable_validation(&$form[$child]);
   }
 }

и вызовите ее перед drupal_process_form ($ form_id, $ form, $ form_state);

0 голосов
/ 15 сентября 2012

Другой вариант, который я пробую, - это обнаружить нажатие кнопки AHAH и вернуться из ловушки проверки без обработки, если это не моя «настоящая» кнопка отправки. Я использовал значение $ op_state 'op', но только что узнал, что это работает только в Chrome.

Просто еще одна идея.

...