【问题标题】:Multiple Forms in Drupal 7Drupal 7 中的多种表单
【发布时间】:2011-05-13 20:38:35
【问题描述】:

我希望在我的网站上添加一个“待办事项”列表,以便登录用户可以维护一份简单的待办任务列表。 从概念上讲,我想显示一组输入框,允许用户编辑任何现有任务、添加新任务或删除现有任务。 每个输入框都有自己的表单,以便可以一一提交更改。 我对 drupal 完全陌生,似乎无法在网上找到任何可以展示如何实现这一目标的资源。

【问题讨论】:

    标签: php forms drupal-7


    【解决方案1】:

    你需要编写一个页面回调函数,多次调用drupal_get_form。如果同一个表单构建器处理表单,那么您需要实现hook_forms。

    function foo_menu() {
      $items['foo'] = array(
        'page callback' => 'foo_page',
        'access arguments' => array('access foo'),
      );
      return $items;
    }
    function foo_page() {
      for ($i = 0; $i < 10; $i++) {
        $build[] = drupal_get_form('foo_form_' . $i, $i);
      }
      return $build;
    }
    function foo_forms($form_id, $args) {
      if (!empty($args) && $form_id == 'foo_form_' . $args[0]) {
        $forms[$form_id]['callback'] = 'foo_form';
      }
      return $forms;
    }
    function foo_form($form, $form_state, $i) {
      return $form;
    }
    

    当然,如果表格不同,则省略foo_forms,只写foo_form_0、foo_form_1等。

    【讨论】:

    • 这不太正确:如果你不从 hook_forms 返回 $forms 那么它就不起作用,至少在 Drupal 7 中不起作用。我已经提交了一个编辑,它正在审核中。
    • 注意:这个答案缺少#ajax 部分,每个部分都是单独提交的。
    【解决方案2】:

    或者,您可以使用实现 http://www.mytinytodo.net/ 的 myTinyTodo 模块 (http://drupal.org/project/mytinytodo)。我在一个网站上使用它,它很灵活,ajaxified,允许优先级和项目注释,以及其他很酷的东西。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多