2012-04-02 51 views
0

我已經使用Drupal 6和AHAH來定製我的節點表單。對於AHAH我用這個代碼:如何在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)); 
} 

新形式元素呈現細,但我得到的狀態消息:

  • Title字段是必需的。
  • 說明字段是必需的。

如何在呼叫後停止驗證?從d.o:

回答

2

解決方案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_state);

0

我想要的另一個選擇是檢測AHAH按鈕單擊並從驗證鉤返回而不處理,如果它不是我的'真實'提交按鈕。我使用的是$ form_state'op'的值,但剛剛瞭解到似乎只能在Chrome上運行。

只是另一個想法。