2012-03-06 38 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. 

); 

好运

穆罕默德