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 を使用してフォームを作成したり、必要なデータを保存したりできます。

また、Views モジュールはこれでは機能しないことに注意してください。ビュー データ ソース モジュールを確認します。

于 2012-10-11T09:38:36.413 に答える
0

もちろん、カスタム モジュールから始めて、hook_menu() と URL を作成して、サービスを通じて取得している情報を「解析」することもできると思います。データを格納する追加のテーブルを作成します。スキーマ モジュールを使用して、モジュール内に mymodule.install ファイルを正しく作成します。

XMLサービスですか?cURLを使用し、この menu() のコールバックで db_query を使用してデータをテーブルに保存します。

そこから、データを表示および操作するためのすべての素敵なdrupal フックをいじることができると思います

于 2012-10-10T15:30:11.520 に答える