现在我们已经创建好了内容类型和触发器。接下来,我们要获取用户的输入,以决定是否把 descartes 设置为默认主题。
要实现这一点,需要两件事:第一,我们需要使用一个不同任务。第二,我们需要为用户体哦能够一个表单,以便用户做出决策。
这个 profile 任务的最后,设置了这两件事:
// Do the form: $task = 'philosopherbios_pick_theme'; $form = drupal_get_form('philosopherbios_theme_form', $url); return $form;
$task 变量被设置为 philosopherbios_pick_theme。然后,一个表单回调函数被用来生成用于显示的表单(我们稍后将会看到),并把那个表单返回。听起来很简单是吗?不过,还有些事需要解释。
'profile' 任务是特殊的
如果我们不把 $task 的值从 profile 更改为 philosopherbios_pick_theme,如果我们遗漏了那一行——情况将会如何呢?
我们期望的是表单被显示出来,当表单被提交时,philosopherbios_profile_tasks() 将会被再次调用,而 $task 的值仍然设置为 profile。
实际上,这正是其它任务的工作方式,而不是 profile 的工作方式。
实际发生的情况是,安装程序将继续进行最终的安装阶段,根本不会显示表单。
安装程序监视 $task 的值。它调用 philosopherbios_profile_tasks() 然后检查 $task 的值。
因此,如果我们想要进行多步骤安装的话,就必须把 $task 设置为与 profile(或 profile-finished)不同的值。$task 把一系列任务串接在一起,每个步骤都需要自己的任务。
通过把 $task 赋值为 philosopherbios_pick_theme,我们定义了一个新任务。这意味着,我们必须注册这一任务。
评论
发表新评论