这是专业drupal书的一个例子。
function annotate_admin_settings() {
$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.'),
);
return system_settings_form($form);
}
但是形成drupal文档,表单样式的构建器就是这样。
function mymodule_myform($form_state) {
}
funcion中有一个参数($ form_state),当我应该使用这个参数时。谢谢你。
答案 0 :(得分:4)
如果您正在寻找$ form和$ form_state之间的差异:
$ form是一个包含表单结构的关联数组。它通过诸如hook_form_alter之类的调用进行修改,以添加字段或执行其他操作。
$ form_state是一个包含表单当前状态的键控数组。确切的状态取决于表单所在的节点进程中的哪个阶段。通常,它保存将在表单提交时处理的值。
答案 1 :(得分:2)
在讨论$form
和$form_state
之间的差异时,这些内容完全正确无误。 $form
定义表单,$form_state
包含有关已处理表单的信息。
那么为什么表单构建函数将$form_state
作为第一个参数(以及任意数量的可选用户指定参数)?提供构建表单时可能需要的上下文和状态信息。
表单构建功能应始终返回表单定义,但他们可以根据单击的最后一个按钮,用户提交的值或其他信息等信息来决定表单定义。正如ceejayoz在评论中所提到的,$form_state
在构建器函数中的常见用法是处理多步形式,其中表单的状态(“步骤1 + 2完成,步骤3仍然要去”)对显示给用户的表单的影响。
在许多常见用例中,$form_state
被完全忽略,可选参数用于提供上下文信息(对于许多示例中的一个,请参阅comment_form API文档)。
答案 2 :(得分:2)
$form_state
的主要用途是在填写并提交表单后保存表单的值。验证函数检查$form_state
以确保输入的值满足验证要求。然后转发相同的$form_state
以提交函数,这些函数可以在验证通过后对数据执行操作(例如,将数据保存到数据库,将内容打印到下一页等)。
也就是说,$form_state
参数可以包含在任何表单函数中,因为表单可以在提交过程中的任何点加载或重新加载。如果您想要访问表单存储的值,请确保您的函数可以使用$form_state
。
有关详细信息,请参阅Drupal的Form Quickstart,尤其是验证和提交部分。