表单提交后自定义重定向

Wil*_*ssy 9 forms hook redirect drupal submit

我有一个表单,这是一个默认的块管理表单.这是人们用来编辑块内容,可见性等的标准格式.当用户保存表单时,drupal会将用户重定向到块管理页面.

现在,我想将用户带到另一个页面,例如.提交块管理表单后的主页.有几种方法可以实现这一点,但drupal建议使用此处所述的hook_alter_form方法

我写了一个名为'formdest'的.module文件,其中包含以下内容:

function formdest_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'block-admin-configure':
    $form_state['redirect'] = '/home';
  break;
}
}
Run Code Online (Sandbox Code Playgroud)

和.info文件一起提供:

; $Id: custom.info,v 1.0 2011/01/01 21:55:00 author Exp $
name = formdest
description = form destination
package = Other
core = 6.x

version = "6.x"
project = "custom"
datestamp = "1229018427"
Run Code Online (Sandbox Code Playgroud)

我的自定义模块显示在模块列表中,我可以启用它,从而激活重定向.但是当我测试它时,drupal仍然会将我带到阻止管理页面而不是主页.

在firebug或系统日志中都没有错误消息,所以我有点无能为力.你们中的任何一个编码神都有什么想法吗?

tam*_*asd 22

将提交处理程序添加到hook_form_alter()中,并在那里设置覆盖.

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'my_form') {
     $form['#submit'][] = 'my_submit_handler';
  }
}

function my_submit_handler(&$form, &$form_state) {
  $form_state['redirect'] = 'home';
}
Run Code Online (Sandbox Code Playgroud)

  • 可以节省一些时间的小提示:如果表单重定向不起作用,请确保$ form_state ["rebuild"] = FALSE; (2认同)