我有一个带表单的自定义模块 我已经实现了像这样的表单挂钩
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中
答案 0 :(得分:1)
浏览器不会影响您的服务器上执行的代码和功能。它只提出请求,之后发生的事情将是相同的。
它们如何呈现页面可能会有所不同。由于提交函数在呈现页面之前运行,因此将在创建html文档之前打印您打印的标记。这很可能是您看到不同结果的原因,您创建的标记无效。
尝试查看源代码并进行比较,我相信它们是相同的。
答案 1 :(得分:0)
我建议你在调试这样的东西时使用Devel模块。启用模块后,也启用开发块。在模块的配置页面中,启用“显示重定向页面”设置,该设置允许您在API重定向到其他位置之前拦截表单提交页面。
另外,我建议不要担心drupal_render而只是用诊断打印进行测试。而不是简单的print()
语句,建议您在调试期间使用Devel的dpm()
函数。
您还可以在到达hook_validate()
之前检查hook_submit()
中发生的情况。
答案 2 :(得分:0)
需要查看表单函数,表单验证,提交,预渲染,构建后,主题(模板+预处理)函数来判断问题是什么。