【发布时间】:2011-05-13 20:38:35
【问题描述】:
我希望在我的网站上添加一个“待办事项”列表,以便登录用户可以维护一份简单的待办任务列表。 从概念上讲,我想显示一组输入框,允许用户编辑任何现有任务、添加新任务或删除现有任务。 每个输入框都有自己的表单,以便可以一一提交更改。 我对 drupal 完全陌生,似乎无法在网上找到任何可以展示如何实现这一目标的资源。
【问题讨论】:
我希望在我的网站上添加一个“待办事项”列表,以便登录用户可以维护一份简单的待办任务列表。 从概念上讲,我想显示一组输入框,允许用户编辑任何现有任务、添加新任务或删除现有任务。 每个输入框都有自己的表单,以便可以一一提交更改。 我对 drupal 完全陌生,似乎无法在网上找到任何可以展示如何实现这一目标的资源。
【问题讨论】:
你需要编写一个页面回调函数,多次调用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等。
【讨论】:
或者,您可以使用实现 http://www.mytinytodo.net/ 的 myTinyTodo 模块 (http://drupal.org/project/mytinytodo)。我在一个网站上使用它,它很灵活,ajaxified,允许优先级和项目注释,以及其他很酷的东西。
【讨论】: