2012-03-06 25 views
0

我正在做一個非常簡單的形式,我添加一個按鈕應該做一些功能,但它不工作。儘管按鈕在頁面上可見,當我點擊它時,頁面被刷新。任何人都可以看到這段代碼有什麼問題嗎?Drupal 7 FAPI類型按鈕不起作用

function donation_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'wedding_article_node_form') { 
     $form['add_donation'] = array(
      '#type' => 'button', 
      '#submit' => array('donation_add_donation'), 
      '#value' => t('Add donation'), 
     ); 
    } 
} 

function donation_add_donation(&$form, &$form_state) { 
    dpm('test'); 
    dpm($form); 
} 

回答

1

如果您想運行提交處理程序,則需要一個submit type元素。從documentation

當按鈕被按下時,表單將被提交到Drupal,在那裏它被驗證和重建。 提交處理程序不被調用。

(重點煤礦)

+0

按鈕是不相關的表單的功能。我只想按下按鈕時,執行一個PHP函數 – Nealv 2012-03-07 17:31:19

+0

您必須使用'submit'類型... Drupal不會在'#submit'中爲'button'運行函數,如文件中所述。你可以在表單驗證處理程序中做到這一點,並檢查'$ form_state ['triggering_element']''的$ form_state ['clicked_button']'看看哪個按鈕被按下了。 – Clive 2012-03-07 17:41:12

+0

好的,我沒有理解爲什麼雖然FAPI文檔中可以使用'#submit' - >'按鈕'類型的功能。那爲什麼還有按鈕類型? – Nealv 2012-03-07 23:35:11

0

嘗試使用屬性 「#executes_submit_callback」,並將其設置爲TRUE

$form['preview'] = array(

    '#type' => 'button', 
    '#value' => t('Preview'), 
    '#weight' => 19, 
    '#executes_submit_callback' => TRUE, // add this line. 

); 

好運

穆罕默德