user的文章

为用户呈现一个设置表单(2)

发表于: 2009-05-03 23:38:00 浏览: 81 标签: drupal

下面让我们看一下定义表单的函数,它为节点类型定义了一个复选框(参看图2-1),并且增加了另外两个选项。函数位于sites/all/modules/custom/annotate/annotate.admin.inc中:

/**

* Form builder. Configure annotations.

*

* @ingroup forms

* @see system_settings_form().

*/

function annotate_admin_settings() {

// Get an array of node types with internal names as keys and

// "friendly names" as values. E.g.,

// array('page' => 'Page', 'story' => 'Story')

$options = node_get_types('names');

$form['annotate_node_types'] = array(

'#type' => 'checkboxes',

'#title' => t('Users may annotate these content types'),

'#options' => $options,

'#default_value' => variable_get('annotate_node_types', array('page')),

'#description' => t('A text field will be available on these content types

to make user-specific notes.'),

);

$form['annotate_deletion'] = array(

'#type' => 'radios',

'#title' => t('Annotations will be deleted'),

'#description' => t('Select a method for deleting annotations.'),

'#options' => array(

t('Never'),

t('Randomly'),

t('After 30 days')

),

// Default to Never

'#default_value' => variable_get('annotate_deletion', 0)

);

$form['annotate_limit_per_node'] = array(

'#type' => 'textfield',

'#title' => t('Annotations per node'),

'#description' => t('Enter the maximum number of annotations allowed per

node (0 for no limit).'),

'#default_value' => variable_get('annotate_limit_per_node', 1),

'#size' => 3

);

return system_settings_form($form);

}

我们添加了一个单选按钮,用来选择什么时候应该删除注释;添加了一个文本输入框,用来限制一个节点上所允许的注释数量(这些模块增强特性的实现,留给大家作为练习)。在这里,我们自己没有管理表单的处理流程,而是使用了函数system_settings_form()来让系统模块为表单添加一些按钮,并让它来管理表单的验证和提交。图2-4给出了的当前表单的样子。

图2-4 使用了复选框,单选按钮,文本输入框的增强表单

本文转载自:zhupou.cn