【问题标题】:Drupal Form not SubmittingDrupal 表单未提交
【发布时间】:2011-09-07 21:42:23
【问题描述】:

您好 Stackoverflow 社区,

我正在使用 FormAPI 创建一个包含多个类别的投票系统。

我使用 drupal_get_form() 构建了表单,并将 html 标记存储到 CCK 字段中的 textarea 中。我还构建了处理数据库的提交函数。

但是,当我显示节点时,可以构造表单,但是不会调用提交函数。我无法弄清楚问题的根源。感谢您的任何建议,谢谢!

*编辑:

定义形式:

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 将表单显示为纯文本。

【问题讨论】:

  • 如果您发布一些相关代码可能会有所帮助,以便我们能够发现问题
  • 我认为如果我们也能看到您的表单代码也会有所帮助。
  • 能否显示完整代码
  • 对不起,我只是认为实际的问题不在表单生成中,而是 Drupal 如何处理创建的表单。

标签: php drupal drupal-6


【解决方案1】:

每次调用 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;

希望有帮助

【讨论】:

  • 非常感谢!我会立即尝试!
猜你喜欢
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多