按照 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'。有没有其他人遇到过这个问题?