我正在使用drupal,我试图在块中创建自己的表单。
我写了一个模块,它创建了一个带有提交按钮的块。
当表单提交时,我试图将值写入我的数据库。
我正在使用这个代码
function my_module_my_form_submit($form, &$form_state) {
block_example_insert_credits($credits_record);
}
function block_example_insert_credits() {
global $user;
$credits_record = array(
'nid' => $node->nid,
'uid' => $user->uid,
'credits' => $form_state['values']['bids'],
);
drupal_write_record('example_table', $credits_record, 'nid');
}
表单提交并验证,表和列存在于我的数据库中。当我提交的形式没有得到发送到数据库,为什么我的代码不正确?
有几处不太对:
- 您没有向
block_example_insert_credits()
传递任何参数 - 在
my_module_my_form_submit()
中没有引用$credits_record
,因此无论如何都不会向插入函数传递任何内容。 - 您正在尝试从一个不存在的函数访问
$form_state
- 在任何地方都没有对节点对象的引用,所以不能使用它。
$node
不是一个全局可用的变量,如果你想要一个节点对象,它将不得不来自一个值保存在你的形式或从menu_get_object()
函数(如果块被显示在节点页面)。
试试这段代码,看看你是否有任何运气:
function my_module_my_form_submit($form, &$form_state) {
block_example_insert_credits($form_state);
}
function block_example_insert_credits($form_state) {
global $user;
$node = menu_get_object();
$credits_record = array(
'nid' => $node->nid,
'uid' => $user->uid,
'credits' => $form_state['values']['bids'],
);
drupal_write_record('example_table', $credits_record, 'nid');
}
希望对你有帮助。
我是一个drupal新手,所以如果我错了,我道歉…$node或$form_state不应该从form_submit传递给insert方法吗?......也许你可以通过使用信用记录数组的看门狗来检查值是否正确传递…干杯