You are here

高级动作(2)

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 11:41

让我们快速的检查一下,我们的实现是否正确,导航到“管理➤站点配置➤动作”。不错,动作出现在了高级动作的下拉选择框中了,如图3-3所示。

 
3-3.新动作显示在了高级动作的下拉选择框中
 
    现在,我们需要提供一个表单,这样管理员就可以选择嘟嘟多少次了。通过使用Drupal的表单API,来定义一个或多个字段,我们就可以实现这一点。我们还需要编写表单的验证函数和提交函数。它们的名字是基于hook_action_info()中所定义的动作ID的。我们当前讨论的动作的动作ID为beep_multiple_beep_action,所以按照约定,我们在后面追加_form,这样就得到了表单定义的函数名字beep_multiple_beep_action_form。Drupal期望的验证函数名字为:动作ID+ _validate(beep_multiple_beep_action_validate);提交函数的名字为:动作ID+ _submit(beep_multiple_beep_action_submit)。
 
/**
* Form for configurable Drupal action to beep multiple times.
*/
function beep_multiple_beep_action_form($context) {
    $form['beeps'] = array(
        '#type' => 'textfield',
        '#title' => t('Number of beeps'),
        '#description' => t('Enter the number of times to beep when this action
            executes.'),
        '#default_value' => isset($context['beeps']) ? $context['beeps'] : '1',
        '#required' => TRUE,
    );
    return $form;
}
 
function beep_multiple_beep_action_validate($form, $form_state) {
    $beeps = $form_state['values']['beeps'];
    if (!is_numeric($beeps)) {
        form_set_error('beeps', t('Please enter a numeric value.'));
    }
    else if ((int) $beeps > 10) {
        form_set_error('beeps', t('That would be too annoying. Please choose fewer
            than 10 beeps.'));
    }
}
 
function beep_multiple_beep_action_submit($form, $form_state) {
    return array(
        'beeps' => (int) $form_state['values']['beeps']
    );
}
老葛的Drupal培训班 Think in Drupal

Drupal版本: