Drupal 7表单提交后重定向到特定页面(选项卡)

4

我正在试图在提交表单后重定向页面。该表单位于页面'formulaires/demande-de-subvention-pour-les-entraineurs',我想要重定向到'formulaires/demande-de-subvention-pour-les-entraineurs/entraineurs'。我该如何做?

function ulsform_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'ulsform_demande_de_subvention_pour_les_entraineurs_form') {
    $form['#submit'][] = 'ulsform_demande_submited_form';
  }else if($form_id == 'ulsform_demande_de_subvention_pour_les_entraineurs_02_form'){
    $form['#submit'][] = 'ulsform_entraineur_submited_form';
  }
}

function ulsform_demande_submited_form(&$form, $form_state){
  global $user;

  $v = $form_state['values'];
  $form_state['redirect'] = 'formulaires/demande-de-subvention-pour-les-entraineurs/entraineurs';

/* My code to insert into the db */    


}

我的问题是无法正常工作,当我尝试创建一个类似另一篇文章中提到的表单['#redirect']时,它也无法正常工作。我该怎么办?

感谢您的帮助!我是Drupal的新手。


以下答案对您有用吗? - Hitesh
当然,这就是为什么将其设置为答案。 - Mike Boutin
2个回答

16

您忘记将$form_state作为引用传递,因此您的更改仅在form_alter函数中起作用。

请按以下方式更改函数签名。请注意&$form_state

function ulsform_form_alter(&$form, &$form_state, $form_id) {
$form_state['redirect'] 可以是一个数组或者简单的字符串。 如果它是一个字符串,用户将会被重定向到那里。 如果它是一个数组,它将根据drupal_goto的工作方式进行操作。
$form_state['redirect'] = array(
  'node/123',
  array(
    'query' => array(
      'foo' => 'bar',
    ),'fragment' => 'baz');

node/123?foo=bar#baz

$form_state['redirect'] = 'node/123'

node/123


0

我在一个自定义模块中有以下代码,在编辑内容后,它总是重定向到/admin/content

function redirect_to_edit_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == "page_article_node_form") {
        $form['#submit'][] = "_redirect_to_edit";
    }
}

function _redirect_to_edit($form, &$form_state) {
    $form_state['redirect'] = array(
            'node/' . $form['nid']['#value'],
            array(
                    'query' => array(
                            'destination' => 'node/' . $form['nid']['#value'],
                    )
            )
    );
    dpm($form_state);

    drupal_set_message("L'article a été mis à jour.", 'status');
}

我最后尝试添加了查询部分。 提交后,我可以读取我的自定义消息,但无法让用户停留在编辑页面。

我错过了什么吗?

谢谢。

编辑:

关于https://www.drupal.org/node/1074616和我在这个问题上的经验,有些情况下重定向不起作用。对我来说,我已经成功地实现了所需的重定向,就像这样:

function redirect_to_edit_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == "page_article_node_form") {
        //$form['actions']['submit']['#submit'][] = '_redirect_to_edit';
        $form['#action'] = '?destination=node/' . $form['nid']['#value'] . '/edit';
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接