【问题标题】:How to force the Drupal form to clear previous results如何强制 Drupal 表单清除以前的结果
【发布时间】:2011-09-21 04:11:36
【问题描述】:

最近我在做一个项目,我试图在 ajax 技术的帮助下生成表单元素(用代码实现表单)。情况是用户应该能够从选项列表中进行选择,然后由于他的选择应该出现另一个选项列表,然后由于他/她从第二组选项中进行选择,他/她应该看到第三组系列选项。现在的问题是,当用户尝试更改第一个选项中的第一个选项时,第二个选项将重新生成,但第三个选项仍然停留在页面上。我试图使用 form_sate['rebuild'] = TRUE 但它不起作用,所有表单元素都消失了。谁能帮我看看应该实现哪些代码以及应该在哪里使用它?

【问题讨论】:

    标签: ajax forms drupal-7


    【解决方案1】:

    没有任何代码几乎是不可能提供帮助的,除了说检查examples modules,特别是ajax_example 模块。

    基本原则是你需要一个<div> 容器来包围你的第二个和第三个选择元素,它将被第一个元素上的#ajax 集合替换。然后,您需要在仅围绕第 3 个选择元素的容器内放置另一个容器,该容器将被第 2 个选择元素上设置的 #ajax 替换。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      嗯.. 由于 $_POST 字段变量,表单页面可能包含以前的值..

      例如,如果我想在 POST 提交时显示清晰的“添加”表单, 我这样做是为了通过 ajax 清除 drupal 以前的表单值:

      <?php
      // AJAX POST handler...
      ....
      $my_form = drupal_render(drupal_get_form("the_form", ...));
      $errors = form_get_errors();
      if (!$errors) {
        // re-render clean form, unset your POST fields....
        unset($_POST['link_path']);
        unset($_POST['link_title']);
        unset($_POST['parent']);
        unset($_POST['weight']);
        $my_form = drupal_render(drupal_get_form("the_form", ...));
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        相关资源
        最近更新 更多