我有一个简单的表格:
function mymodule_test_form(&$form_state, $nid) {
form['submit'] = array(
'#type' => 'submit',
'#value' => 'Click me!',
);
$form['mymodule_status'] = array(
'#type' => 'select',
'#attributes' => array('class' => 'myclass'),
'#default_value' => variable_get('mymodule_status', 0),
'#options' => array('one', 'two', 'three', 'four', 'five'),
);
return $form;
}
function mymodule_test_form_submit($form, &$form_state) {
global $user;
db_query("INSERT INTO {mymodule} (nid, uid, number, created) VALUES (%d, %d, %d, " . time() . ")", $nid, $user->uid, $status);
}
在我的node-contenttype.tpl.php文件中,我打印drupal_get_form('mymodule_test_form',$ node-> nid)。顺便说一下,它是在模板中打印drupal_get_form的正确方法吗?我尝试将drupal_get_form添加到hook_nodeapi视图状态,但没有输出,所以我最终将其打印在模板中。
另一件事是默认值,我不知道如何使用它。 variable_get始终为0.我是否需要创建自己的自定义查询并将其设置为我的默认值?我认为default_value是由drupal或其他东西自动检索的......
希望我能得到一些帮助。感谢。
编辑:发现节点ID在:$ form ['#parameters'] [2]
答案 0 :(得分:1)
使用variable_get访问先前使用variable_set设置的值。因此,variable_get没有返回任何内容,因为没有名为mymodule_status的先前设置的变量。请参阅http://api.drupal.org/api/function/variable_get/6。
我不确定,但似乎您希望默认值为用户先前设置的状态(如果该用户已设置它)。您需要对该案例进行查询。
function mymodule_test_form(&$form_state, $nid) {
global $user;
form['submit'] = array(
'#type' => 'submit',
'#value' => 'Click me!',
);
$query = "SELECT number FROM {mymodule} WHERE nid = %d AND uid = %d";
$result = db_query($query, $nid, $user->uid);
if ($result) $status = db_result($result);
if ($status) $default_value = $status;
else $default_value = 0;
$form['mymodule_status'] = array(
'#type' => 'select',
'#attributes' => array('class' => 'myclass'),
'#default_value' => $default_value,
'#options' => array('one', 'two', 'three', 'four', 'five'),
);
return $form;
}
同样在你的提交功能中,你需要引用$ form_state ['values'] ['mymodule_status']而不是$ status。