我正在使用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');
}
表单提交并验证,表和列存在于我的数据库中。当我提交表单时,没有任何内容被发送到数据库,为什么我的代码不正确?
答案 0 :(得分:2)
有些事情不太正确:
block_example_insert_credits()
$credits_record
中没有引用my_module_my_form_submit()
,因此无论如何都不会将任何内容传递给插入函数。$form_state
$node
不是全局可用的变量,如果您想要一个节点对象,它必须来自表单中的值save或来自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');
}
希望有所帮助。
答案 1 :(得分:1)
我是一个drupal新手所以道歉,如果我错了......是不是$ node或& $ form_state应该从form_submit传递给insert方法?......也许你可以通过使用看门狗检查信用记录数组来检查值是否正确传递...欢呼