提交始终默认为首次提交按钮(多表格)

时间:2013-05-30 19:51:27

标签: drupal-7 form-api

在Drupal 7中Examples Module之后,我创建了一个多步骤表单。第1页是值,提交转到第2页(一种确认屏幕)。在第2页,我有一个提交和一个后退按钮。

根据Examples模块中的示例#8,我们使用后退按钮的提交按钮,使用自定义#submit处理程序,如下所示:

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Submit'),
  '#submit' => array('my_final_submit_function'),
);

$form['back'] = array(
  '#type' => 'submit',
  '#value' => t('<< Back'),
  '#submit' => array('my_back_button_handler_function'),
);

在我尝试提交或回复之前,一切正常。无论在代码中首先放置哪个按钮(提交或返回),Drupal 7按钮都会作为单击按钮注册,包括在form_state中。每个函数都有自己的#submit指向不同的函数。我已经确认Drupal可以看到/执行这两个函数。

Drupal认为触发的提交按钮是被处理的#submit处理程序。

当我首先按下后退按钮时,两个按钮都会触发后退按钮功能。当我首先提交提交按钮时,都会触发提交逻辑。虽然示例模块没有在每个上设置#name(为了防止两个字段的name = op),但我已经尝试过这样做了。我没试过就试过了。它似乎没有什么区别。

我没有使用image_button,而是正常的&#39; #type&#39; =&#39;提交&#39;。还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要找到像这样的触发按钮

$ form_state [&#39; triggering_element&#39;] [&#39; #value&#39;] ==&#39;返回&#39;

这样你就可以确定如何处理所执行的操作。

相关问题