【问题标题】:Drupal 7 redirect to a specific page (a tab) after form submit表单提交后,Drupal 7 重定向到特定页面(选项卡)
【发布时间】:2013-01-27 00:06:52
【问题描述】:

我在提交表单后尝试重定向页面。表格位于“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的新手

【问题讨论】:

  • 下面的答案对你有用吗?
  • 确实如此,这就是为什么将其设置为答案

标签: php drupal drupal-7 drupal-modules


【解决方案1】:

您忘记通过引用传递$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

【讨论】:

    【解决方案2】:

    我在自定义模块中有以下代码,编辑内容后总是重定向到 /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';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多