2

我正在使用 Drupal 7,我需要从 Web 服务中检索数据。由于规定,这些数据不能存储在 Drupal 数据库中。检索这些数据的最佳实践是什么:使用 Java、Drupal 实体或存储在令牌中?

我们目前正在根据存储在数据库中的 ID 进行调用,并显示来自与该 ID 关联的 Web 服务的数据。

问题是这一切都是在 Drupal 之外完成的,我们无法使用 Drupal 来管理任何此类内容。所以我们有许多带有自定义代码的模块来完成从创建表单、预填充表单、绑定到 Drupal 上的用户帐户等所有工作。

我们正处于可以完全重构其工作方式的地步。

您对我们如何改进这一点有什么建议吗?

注意:我们需要存储的数据量会很大。我在想也许我们可以围绕 Web 服务数据创建一个实体,然后通过添加标记作为默认值来显示与字段相关的数据。存储在数据库中的 ID 将更改通过令牌显示的内容。

4

2 回答 2

0

如果我正确理解您的问题,那么您的重构不应该是将数据存储在 drupal 中。几个月前我需要制作一个定位服务站点,并且需要使用 Google Maps API 来填充缺失的地理位置数据。

像这样的结构怎么样:您使用普通的 drupal 节点和用户制作表单和数据(用户、节点类型等)。然后,使用 hook_node_insert、hook_node_update 和 hook_node_load,您可以强制 drupal 向其他服务提交或检索信息。hook_node_presave 在将用户输入保存到drupal数据库之前清除用户输入非常有用(请注意,插入钩子将在presave之后调用。)。

您仍然可以使用 drupal 创建表单、存储必要的数据等。

另请注意,视图模块不适用于此。检查查看数据源模块。

于 2012-10-11T09:38:36.413 回答
0

好吧,我想你当然可以从一个自定义模块开始,创建一个 hook_menu() 和一个 url 来“解析”你通过服务获得的信息。创建额外的表来存储你的数据 - 如果它太大,可能会被序列化. 使用 Schema 模块在模块中正确创建 mymodule.install 文件。

它是 XML 服务吗?使用cURL,在此 menu() 的回调中使用 db_query 将数据存储在表中。

从那里我想你可以玩弄所有漂亮的drupal钩子来显示和操作你的数据

于 2012-10-10T15:30:11.520 回答