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'][]相比,这是首选行为
有关如何工作的简单示例,请参见