IE浏览器中hook_form_submit()的问题

时间:2010-10-29 07:23:13

标签: php html drupal browser drupal-6

我有一个带表单的自定义模块 我已经实现了像这样的表单挂钩

hook_form()
hook_form_submit($form, &$form_state)

当我在_submit中有一个print语句时,它不显示在屏幕上,但在mozilla firefox中工作正常。在IE中_submit只是没有被调用,我使用drupal_render来单独渲染每个表单元素

编辑:

<?php echo drupal_render($form['form field']);?>

这个方法中的渲染形式,最初无法在ff中提交表单也读取了一些添加这些行的地方

<?php print drupal_render($form['form_build_id']); print drupal_render($form['form_id']); print drupal_render($form['form_token']); ?> 所以我盲目地添加它们,之后它在ff中工作而不是在IE中

3 个答案:

答案 0 :(得分:1)

浏览器不会影响您的服务器上执行的代码和功能。它只提出请求,之后发生的事情将是相同的。

它们如何呈现页面可能会有所不同。由于提交函数在呈现页面之前运行,因此将在创建html文档之前打印您打印的标记。这很可能是您看到不同结果的原因,您创建的标记无效。

尝试查看源代码并进行比较,我相信它们是相同的。

答案 1 :(得分:0)

我建议你在调试这样的东西时使用Devel模块。启用模块后,也启用开发块。在模块的配置页面中,启用“显示重定向页面”设置,该设置允许您在API重定向到其他位置之前拦截表单提交页面。

另外,我建议不要担心drupal_render而只是用诊断打印进行测试。而不是简单的print()语句,建议您在调试期间使用Devel的dpm()函数。

您还可以在到达hook_validate()之前检查hook_submit()中发生的情况。

答案 2 :(得分:0)

需要查看表单函数,表单验证,提交,预渲染,构建后,主题(模板+预处理)函数来判断问题是什么。