簡體   English   中英

Drupal表單重定向到片段

[英]Drupal form redirect to fragment

我的首頁底部有一個投票塊,我想在提交后將投票表單重定向到塊。 我使用Drupal 6.x. 像往常一樣,我使用form_alter

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'poll_view_voting':
      // not worked also
      //$form['#redirect'] = url('', array('fragment' => 'poll-block'));
      $form['#redirect'] = '#poll-block';
      break;
  }
}

提交后,我被重定向到/%2523poll_block (這是一個404頁面)。

preprocess_page函數中,我使用drupal_set_message()編寫了$_REQUEST['q'] ,它顯示了良好的重定向(#poll-block),但瀏覽器中的URL已經過編碼。

有誰能夠幫助我?

提前致謝。

根據FAPI引用 ,您可以輸入要傳遞給drupal_goto()的數組。 最終這是通過url()進行的,所以在這里使用你的url()函數的忍者技巧。

基本上你可以在這里有3種類型的數據。 字符串,布爾值FALSE或數組。 如果它是一個字符串,它將在url編碼后重定向到正確的位置(在你的情況下會發生什么)。 FALSE將禁用重定向,如果輸入數組,它將傳遞給drupal_goto()。

所以對於你的情況,它將是:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'poll_view_voting':
      // not worked also
      //$form['#redirect'] = url('', array('fragment' => 'poll-block'));
      //$form['#redirect'] = array('node/54', array('page' => '2'), 'poll-block'); // No "#" in fragment. This will work.
       $form['#redirect'] = array('', array(), 'poll-block');
      break;
  }
}

但是,drupal_goto()通常使用絕對URL,所以除非你使用javascript,否則你的努力可能會毫無用處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM