走向下一个drupal任务

现在我们已经创建好了内容类型和触发器。接下来,我们要获取用户的输入,以决定是否把 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 的值,安装程序将再次调用philosopherbios_profile_tasks(),并保持 $task 不变。
  • 如果 $task 的值是 profile-finished,那么安装程序将停止使用大纲并继续安装过程。
  • 如果 $task 的值是 profile, 安装程序假定 profile 任务是简单任务(如同本章前面看到过的那个),并认为安装任务结束了。从这个角度上说,安装程序处理 profile-finished 和 profile 的方式是相同的。

因此,如果我们想要进行多步骤安装的话,就必须把 $task 设置为与 profile(或 profile-finished)不同的值。$task 把一系列任务串接在一起,每个步骤都需要自己的任务。

通过把 $task 赋值为 philosopherbios_pick_theme,我们定义了一个新任务。这意味着,我们必须注册这一任务。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 允许HTML标签:<a> <img><em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><p>
  • 自动断行和分段。

更多关於格式化选项的信息

Image CAPTCHA
验证码
|