Drupal的模块开发中的$form和$form_state参数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drupal的模块开发中的$form和$form_state参数。相关的知识,希望对你有一定的参考价值。

在Drupal的模块开发中经常用到这两个参数,但是我不知道这两个参数到底是什么意思呢?每个参数都是一个数组,每个数组里面都包含了些什么内容?

前面一个是 包含当前form 的所有表单元素 包括submit action, buttons, theme 等等.
后面一个就比较复杂了, 所有的form 表单提交行为都将作为参数 进入这个array 去处理.
简而言之,前面一个是初始form 的元素,由它确定了html 中form 的实际结构
form_state包含了所有表单提交行为 flag, 当然提交后也将包括处理完的$_post所有内容
当然经过 validate, submit 等还可以进行使用custom code 去修改form_state中内容.
如果是drupal 6 的话 可以看下
drupal_process_form这个函数.表单的提交是通过这个函数作处理的 几乎所有的hook 都是从这里去调用的
参考技术A 到官网hook_form那里查一下看看。
$form_state 好像是包含表单值等。$form好像是建表单,设置表单什么样。
函数的参数单拿出来,不能看出是什么意思的。只能看它在哪个函数里的意思。

Drupal表单找不到页面

我在模块下启用了一个表单,但是访问该页面会出现“找不到页面”错误。

网站/默认/模块/ awesome_form / awesome_form.module

function awesome_form_menu(){
 $items['my-new-form'] = array(
    'title' => 'simple form',
    'type' => MENU_NORMAL_ITEM,
    'page callback' => 'drupal_get_form',
    'page arguments' => array('show_form_callback'),
    'access arguments' => array('access content'),
    'file' => 'application_file.inc'
  );
  return $items;
}

网站/默认/模块/ awesome_form / application_file.inc

function show_form_callback($form, &$form_state){
  $form['test_input'] = array(
    '#type' => 'textfield',
    '#required' => TRUE,
    '#title' => 'Name'
  );
  return $form;
}

网站/默认/模块/ awesome_form / awesome_form.info

name = Awesome Form
description = Some Test Form
core = 7.x

当我浏览到mysite.com/my-new-form时,我收到“找不到页面”错误。我还在模块下启用了“Awesome Form”模块。然而同样的问题。

答案

您的模块只是在干净安装上进行测试。我唯一没做的就是打开模块文件和.inc文件中的php标签,就是这样。一切都按预期工作。

以上是关于Drupal的模块开发中的$form和$form_state参数。的主要内容,如果未能解决你的问题,请参考以下文章

在 Drupal 中查找“更改”特定表单的模块列表

Drupal表单找不到页面

构建后在Drupal中的使用

将默认值设置为输入字段drupal 7

Drupal 7 - 自定义模块:在节点提交中使用自定义表单输入

Drupal 视图添加表单以添加记录