我们的第一个自定义安装任务为用户显示了一个交互式的表单。现在让我们定义该表单。我们可以使用标准的表单API,但是在这里需要仔细一点,我们把$form['#redirect']设置为FALSE,把表单的动作设为安装器提供的URL。表单的处理由一个提交处理器负责,这和普通的表单一样。下面是表单定义和提交处理器。表单如图23-4所示。
/**
* Define form used by our dept-info installer task.
*
* @param $form_state
* Keyed array containing the state of the form.
* @param $url
* URL of current installer page, provided by installer.
*/
function university_department_info($form_state, $url) {
$form['#action'] = $url;
$form['#redirect'] = FALSE;
$form['department_code'] = array(
'#type' => 'select',
'#title' => st('Departmental code'),
'#description' => st('Please select the correct code for your department.'),
'#options' => array('BIOL', 'CHEM', 'COMP', 'DRUP', 'ENGL', 'HIST', 'MATH',
'LANG', 'PHYS', 'PHIL'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => st('Save and Continue'),
);
return $form;
}
/**
* Handle form submission for university_department_info form.
*/
function university_department_info_submit($form, &$form_state) {
// Set a persistent variable.
variable_set('department_code', $form_state['values']['department_code']);
}
注意 在整个安装轮廓中,我们使用了st()来替代t(),这样就可以将整个安装轮廓的翻译保存在一个安装轮廓翻译文件中了。它是一个位于安装轮廓的可选目录translations中的.po文件。关于.po文件的更多详细,可参看第18章。

图 23-4.我们的自定义任务的截图