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

Mik*_*tin 4 php drupal drupal-7 drupal-modules

在我提交表单后,我正在尝试重定向页面.表格在页面'formulaires/demande-de-subvention-pour-les-entraineurs',我想重定向'公式/ 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 */    


}
Run Code Online (Sandbox Code Playgroud)

它不起作用,当我尝试在另一个帖子上创建一个类似锯子的表单['#redirect']时,它也不起作用.我该怎么办?

谢谢您的帮助!我是drupal的新手

Aye*_*h K 16

您忘记$form_state通过引用传递,因此您的更改仅在form_alter函数中起作用.

更改您的功能签名如下.注意&$form_state:

function ulsform_form_alter(&$form, &$form_state, $form_id) {
Run Code Online (Sandbox Code Playgroud)

$ form_state ['redirect']可以是数组或简单字符串.如果它是一个字符串,用户将被重定向到那里.如果它是一个数组,它将根据drupal_goto的工作方式工作.

$form_state['redirect'] = array(
  'node/123',
  array(
    'query' => array(
      'foo' => 'bar',
    ),'fragment' => 'baz');
Run Code Online (Sandbox Code Playgroud)

node/123?foo=bar#baz

$form_state['redirect'] = 'node/123'
Run Code Online (Sandbox Code Playgroud)

node/123