gpt4 book ai didi

php - Drupal 表单重定向到片段

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:36 24 4
gpt4 key购买 nike

我的首页底部有一个投票区 block ,我想在提交后将投票表单重定向到该区 block 。我使用 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 reference , 你可以输入一个数组传递给 drupal_goto() .最终这会经历 url()所以在这里使用你的 url() 函数的忍者技巧。

基本上,您可以在此处拥有 3 种类型的数据。字符串、 bool 值 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,否则您的努力可能毫无用处。

关于php - Drupal 表单重定向到片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11801975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com