1

我有一个自定义用户注册表(D7)。我在THEME_form_alter中添加了两个自定义提交按钮

  $form['actions']['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Sign Up')
  );
  $form['actions']['submit2'] = array(
    '#type' => 'submit', 
    '#value' => t('Sign Up & Take Survey')
  );

这些渲染很好,并且都同样处理注册,但是当点击submit2时,我想重定向到webform调查。

我添加了以下内容:

function tweakform_user_register_submit($form, &$form_state) {

  if($form_state['values']['op'] == $form_state['values']['submit2']) {
    echo 'Redirect to survey and populate fields with user details';
    exit;
  }  

}

我刷新了缓存,似乎没有调用此函数。

亚历克斯

  • 好吧,我现在看到你需要表单来提交你的数据而不管他们推送的按钮,对不起那个疏忽。生成表单的函数名称是什么?我不明白你为什么if()不会成功。 -  克里斯洛克威尔 2013年7月3日19:52 
3

我建议使用#submit属性

例如:

$form['actions']['submit'] = array(
 '#type' => 'submit', 
 '#value' => t('Sign Up')
);
$form['actions']['submit2'] = array(
  '#type' => 'submit', 
  '#value' => t('Sign Up & Take Survey')
  '#submit' => array('custom_submit_for_this_button')
);

然后:

function your_form_name_submit($form, &$form_state) {
  // your logic for first button here; this is auto-called by Drupal
}
function custom_submit_for_this_button($form, &$form_state) {
  // your logic for second button here
}
  • 这是要走的路。默认的表单处理程序*_submit*_validate只是默认值 - 但你根本不必使用它们。当默认值不再适合您时; 你利用其他工具#submit -  tenken 2013年 7月3日19:41
  • 好的。但在提交的情况下,我希望两个按钮都执行默认值,只有在第二个按钮的情况下,我才想重定向到webform。我假设我可以先调用默认值? -  Alex.Barylski 2013年 7月3日19:43
0

在表单提交提交2按钮内,您应该使用redirect如下。

function your_form_name_submit($form, &$form_state) {
 $form_state['redirect'] = 'path_to_your_webform_survey';
}
-1
$form['actions']['submit2'] = array(
  '#type' => 'submit', 
  '#value' => t('Sign Up & Take Survey'), //the missing line in above example
  '#submit' => array('custom_submit_for_this_button')
);

来自  https://drupal.stackexchange.com/questions/78289/drupal-7-two-submit-buttons-and-custom-field-valida...