代码之家  ›  专栏  ›  技术社区  ›  alxp

提交操作前呈现Drupal表单

  •  1
  • alxp  · 技术社区  · 16 年前

    问题是Drupal在执行提交操作之前正在绘制表单,因此在用户重新加载页面之前,该操作似乎不起作用。

    处理这个问题的常见方法是什么?将form_state['redirect']设置为转到页面似乎不起作用。

    3 回复  |  直到 15 年前
        1
  •  3
  •   jacobangel    16 年前

    您修改了表单,使其保存了一些关于表单状态的信息。然后,您在提交函数的开头添加了一个新案例,如果您没有上传完所有文件,该函数将立即返回,并将重新绘制表单。

    function modulename_uploader_form(&$form_stuff=null) {
    //the function that sets your form array
    $stuff = (isset($form_stuff['values'])) ? 
        $form_stuff['storage']['done_uploading'] : 
        false; //if values isnt set, this is the first visit. 
    $form_stuff['storage']['done_uploading'] = done_uploading();
    .... the rest of your form creation function.
    
    
    function modulename_uploader_submit($form, &$form_stuff) {
        if($form_stuff['storage']['done_uploading']) {
    return;
    }
    ... rest of the function
    

        2
  •  1
  •   Eaton    16 年前

    在您的提交处理程序中设置$form_state['redirect']只会导致表单重新加载,不包含旧数据。这是一种清除表单的方法,这样旧值就不会作为默认值存在。

    您可能希望使用$form_state['rebuild'],它使您的表单构建函数有机会在表单提交处理程序运行后重建表单的实际结构,添加更多字段或从其他字段中删除选项。

    This blog post Drupal 5 to 6 upgrade docs Drupal.org上提供了关于$form_state的工作原理及其各种标志的有用概述。

        3
  •  0
  •   EricSchaefer    16 年前

    问题是Drupal在执行提交操作之前正在绘制表单,因此在用户重新加载页面之前,该操作似乎不起作用。

    我简直不敢相信。你确定吗?

    推荐文章