Drupal 7 防止Drupal表单在提交时再次被调用?

Drupal 7 防止Drupal表单在提交时再次被调用?,drupal-7,drupal-forms,Drupal 7,Drupal Forms,在Drupal7中,我有这个代码 它将硬编码字符串my\u module\u custom\u route\u form定义为表单ID,并使用drupal\u get\u form初始化表单。还有一个提交按钮 访问此路线/custom\u路线,输出为 initialize form 如果您提交表单,则输出为 initialize form submitted 问题是:此表单的提交将再次调用my\u module\u custom\u route\u表单。 如何防止提交时再次调用它?如果你知道

在Drupal7中,我有这个代码

它将硬编码字符串
my\u module\u custom\u route\u form
定义为表单ID,并使用
drupal\u get\u form
初始化表单。还有一个提交按钮

访问此路线
/custom\u路线
,输出为

initialize form
如果您提交表单,则输出为

initialize form
submitted
问题是:此表单的提交将再次调用
my\u module\u custom\u route\u表单。

如何防止提交时再次调用它?如果你知道Drupal为什么这么做,我也想知道

function my_module_menu() {
    $items = array();
    $items['custom_route'] = array(
        "page arguments" => array("my_module_custom_route_form"),
        "page callback" => "drupal_get_form",
        "access callback" => TRUE,
    );
    return $items;
}

function my_module_custom_route_form($form, &$form_state){
    print_r("initialize form");
    $form = array();
    $form["button"] = array(
        "#type" => "submit",
        "#value" => "submit"
    );
    return $form;
}

function my_module_custom_route_form_submit($form, &$form_state){
    print_r("<br />submitted");
    exit;
}
功能我的模块菜单(){
$items=array();
$items['custom_route']=数组(
“页面参数”=>数组(“我的模块\自定义\路由\表单”),
“页面回调”=>“drupal获取表单”,
“访问回调”=>TRUE,
);
退回$items;
}
功能我的模块自定义路由表单($form,&$form\u state){
打印(“初始化表单”);
$form=array();
$form[“button”]=数组(
“#键入”=>“提交”,
“#值”=>“提交”
);
返回$表格;
}
函数my_module_custom_route_form_submit($form,&$form_state){
打印(
已提交); 出口 }
我想您需要的是:

在提交处理程序中设置$form_state['redirect']=false


希望有帮助

我想你需要的是:

在提交处理程序中设置$form_state['redirect']=false


希望有帮助

我知道这是一个老问题,但这个问题仍然相关——我遇到了同样的问题。在我的例子中,这肯定是一个问题,因为块中的表单声明要处理一个队列项,但是当再次调用表单生成器时,该项当然会在队列中被阻止

单击非ajaxified表单上的按钮会导致页面重新加载。对于块,这将调用block_view函数,该函数从0重建表单


我通过调整提交按钮解决了这个问题。然后调用提交,而无需重新查看块(并重建表单,如此处所示)。“示例”模块中有一个很好的ajax示例,适用于那些不熟悉ajax表单的人。

我知道这是一个老问题,但这个问题仍然相关-我遇到了同样的问题。在我的例子中,这肯定是一个问题,因为块中的表单声明要处理一个队列项,但是当再次调用表单生成器时,该项当然会在队列中被阻止

单击非ajaxified表单上的按钮会导致页面重新加载。对于块,这将调用block_view函数,该函数从0重建表单


我通过调整提交按钮解决了这个问题。然后调用提交,而无需重新查看块(并重建表单,如此处所示)。“示例”模块中有一个很好的ajax示例,适用于那些不熟悉ajax表单的人。

您好,尝试过,不起作用。输出“初始化表单”显示在“已提交”之前。因此,它不是在重定向之后打印的,而是在运行“提交”功能之前打印的。这就是问题所在。嗨,试过了,没用。输出“初始化表单”显示在“已提交”之前。因此,它不是在重定向之后打印的,而是在运行“提交”功能之前打印的。这就是问题所在。