2

按照 Drupal 7 中的示例模块,我正在创建一个多步骤表单。第 1 页是值,提交后转到第 2 页(一种确认屏幕)。在第 2 页,我有一个提交和一个后退按钮。

根据示例模块中的示例#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,而是普通的 '#type'='submit'。有没有其他人遇到过这个问题?

4

1 回答 1

1

你需要像这样找出触发按钮

$form_state['triggering_element']['#value'] == '返回'

这样,您将确定如何处理执行的操作。

于 2013-05-31T08:12:55.563 回答