Drupal 7 Drupal 7表单API在表单提交时运行函数

Drupal 7 Drupal 7表单API在表单提交时运行函数,drupal-7,drupal-forms,Drupal 7,Drupal Forms,我已经创建了一个自定义模块,我需要收集信息,并在填写和提交表单时运行一个函数 它有两个文本区域和一个按钮 这就是我在页面上看到的内容: 文件:myFunction.admin.inc function myFunction_form($form) { $form['pages'] = array( '#type' => 'fieldset', '#title' => t('Data'), '#collapsible' => FALSE,

我已经创建了一个自定义模块,我需要收集信息,并在填写和提交表单时运行一个函数

它有两个文本区域和一个按钮

这就是我在页面上看到的内容:

文件:
myFunction.admin.inc

function myFunction_form($form)
{

    $form['pages'] = array(
    '#type' => 'fieldset',
    '#title' => t('Data'),
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
  );

    $form['pages']['title'] = array(
    '#type'          => 'textarea',
    '#title'         => t('Title'),
    '#rows'          => 5,
    '#resizable'    => FALSE,
  );

  $form['pages']['body'] = array(
    '#type'          => 'text_format',
    '#title'         => t('Body'),
    '#rows'          => 5,
    '#resizable'    => FALSE,
    '#format' => 'full_html',
  );

  $form['submit'] = array('#type' => 'submit', '#value' => t('Run Function'));

    myFunction($form);
    return $form;

}

function myFunction()
{
//This is where I use the data collected from my form and do what I need to do.
}
因此,我在这张表格中遗漏的事情(请告诉我,我是否在这方面走错了方向)是,我需要验证表格是否已填写,如果没有,则返回错误消息

如果填写了表单,则正确地将字段数据传递给我的函数,我只需在
return$form之前添加
function myFunction()
myFunction()

有人能帮我完成自定义模块的最后一部分吗

请注意,此模块不会向数据库添加任何内容


再一次,请告诉我我是否走错了路。

是的,你可能走错了路。 您必须添加自定义验证器并提交如下函数

<?php

$form['#submit'][] = my_submit_callback
$form['#validate'][] = my_validator_callback


function my_submit_callback($form, &$form_state) {
  // form_state array contains the submitted values
}
function my_validator_callback($form, &$form_state) {
  // form_state array contains the submitted values
  if ($form_state['values']['body'] == '') {
   form_set_error(...)
}
}

是的,你可能走错了路。 您必须添加自定义验证器并提交如下函数

<?php

$form['#submit'][] = my_submit_callback
$form['#validate'][] = my_validator_callback


function my_submit_callback($form, &$form_state) {
  // form_state array contains the submitted values
}
function my_validator_callback($form, &$form_state) {
  // form_state array contains the submitted values
  if ($form_state['values']['body'] == '') {
   form_set_error(...)
}
}

这样做:

$form['#validate'][] = 'myCustomValidateFunction';
$form['#submit'][]   = 'myCustomSubmitFunction';

function myCustomValidateFunction($form, &$form_state) { 
  \\if validation was not passed use form_set_error()
}

function myCustomSubmitFunction($form, &$form_state) { 
   //submit logic, $form_state includes the values
}

这样做:

$form['#validate'][] = 'myCustomValidateFunction';
$form['#submit'][]   = 'myCustomSubmitFunction';

function myCustomValidateFunction($form, &$form_state) { 
  \\if validation was not passed use form_set_error()
}

function myCustomSubmitFunction($form, &$form_state) { 
   //submit logic, $form_state includes the values
}

您应该遵循表单API使用的标准命名结构。如果您的功能是:

myFunction_form()

然后

提交执行任何验证时,将调用myFunction_form_validate()。如果一切顺利,那么

将调用myFunction\u form\u submit()。您应该将提交逻辑(或对自定义函数的调用)放置在submit中

与设置$form['#submit'][]和$form['#validate'][]相比,这是首选行为


有关如何工作的简单示例,请参见。

您应该遵循表单API使用的标准命名结构。如果您的功能是:

myFunction_form()

然后

提交执行任何验证时,将调用myFunction_form_validate()。如果一切顺利,那么

将调用myFunction\u form\u submit()。您应该将提交逻辑(或对自定义函数的调用)放置在submit中

与设置$form['#submit'][]和$form['#validate'][]相比,这是首选行为

有关如何工作的简单示例,请参见