您好Stackoverflow社区,
我正在使用FormAPI创建一个包含许多类别的投票系统。
我用drupal_get_form()构建了表单,并将html标记存储在CCK字段的textarea中。我还构建了处理数据库的submit函数。
但是,当我显示节点时,可以构造表单,但不会调用提交函数。我无法弄清楚问题的根源。感谢任何建议,谢谢!
*编辑:
定义表格:
function judges_nodeapi(&$node, $op, $teaser, $page) {
switch ($op) {
case 'view':
...
$node->field_judging_form[0]['value']=drupal_get_form('judges_entry',($node));
node_save($node);
}
}
function judges_entry($form_state, $node){
...
return $form;
}
然后我只是使用CCK将表单显示为纯文本。
答案 0 :(得分:2)
每次调用drupal_get_form()
时都会生成一个新令牌(出于安全原因),因此您无法将表单静态呈现到字段中并期望它能够正常工作。
您需要做的是在每次显示表单时通过实现hook_preprocess_node然后在模板文件中输出表单来获取表单的新版本。你的模块文件中有这样的东西:
function MYMODULE_preprocess_node(&$vars) {
$vars['my_form'] = drupal_get_form('judges_entry',($vars['node']));
}
然后在你的模板文件(node.tpl.php)中:
echo $my_form;
希望有所帮助