如何在Drupal中显示外部数据库的数据?

时间:2010-04-14 22:18:54

标签: drupal

我正在构建一个自定义模块,允许我的用户对MS SQL数据库进行简单的查询。我已经使用hook_form()构建了表单,并且已经进行了验证。

我打算从hook_form_submit()中检索数据,但是一旦我这样做了,我如何将它附加到表单下面?看来我没有访问hook_form_submit()的$ output。我不知道下一步该做什么。

由于

达纳

2 个答案:

答案 0 :(得分:2)

当您渲染表单时,您应检查$ form_state ['values']以查看用户在呈现表单时是否已提交表单。然后,您可以在绘制表单的同一步骤中绘制表单结果。

用户第一次加载表单页面时,$ form_state变量将不包含任何提交的表单信息,因此您可以呈现空结果表。

Drupal.org上的Drupal Form API工作流程有一个很好的例子:Form API Internal Workflow Illustration

答案 1 :(得分:0)

尝试在hook_form()方法中输出数据的问题是该方法被调用两次,这会在第二次清除post值。在hook_form()函数中抛出一个dpm($ form_state),你会看到两组post数据。一个有价值,一个没有。

因此,在剖析内置的搜索模块后,我完全按照我希望表单的工作方式运行,我想出了这是如何完成的。好吧,至少有一种方法可以做到。

什么搜索模块在hook_form_submit()中获取$ form_state中的值并将它们粘贴到URL中,然后将$ form_state ['redirect']设置为该新URL,有效地将这些变量存储在URL中并更改POST到GET。

现在,在回调中,他们从URL中提取这些值,对它们进行搜索,然后他们调用drupal_get_form(),将结果追加到最后并返回它。

还有另一个解决方案HERE,他们使用SESSION存储值,直到第二次旅行。很奇怪,但它确实有效。