4

Drupal 7 で Location モジュール (特にその Location CCK 部分) を使用しています。ロケーション フィールド 'field_location' を User (ホスティング エンティティの例として) に追加し、ユーザー編集インターフェイスでテスト ユーザーのロケーション値を初期化しました。ただし、現在のユーザーの位置データにアクセスできません。

global $user;
$user_id = $user->uid;

$loc = $user->field_location;

また:

$wrapper = entity_metadata_wrapper('user', $user_id);
$loc = $wrapper->field_location;

$loc を使用したステートメントは、オブジェクトとラッパーに対しては機能しません (ユーザー オブジェクトとラッパーの両方が正常に初期化されます)。同じ:

$loc = $wrapper->field_location[0];
$loc = $wrapper->field_location->raw();

このトピックに関する多くの投稿を読みましたが、実行可能な解決策が見つかりませんでした。これに関する洞察をいただければ幸いです。

4

1 に答える 1

3

location モジュール自体は、そのままでは Entity API/Metadata Wrapper をサポートしていません。ただし、これは Location Entity モジュールにパッケージ化されているため、エンティティ API のサポートが可能になります。

有効にすると、

$wrapper = entity_metadata_wrapper('user', $user_id);
$loc = $wrapper->field_location->value();

期待どおりに動作します。

簡単な回避策が必要な場合は、次のこともできます。

$user_wrapper = entity_metadata_wrapper('user', $user_id);
$raw_user = $user_wrapper->raw();
$loc = $raw_user->field_location['und'][0];

これはエレガントではありませんが、モジュールを追加しないソリューションです。好きなのを選びな。

于 2014-06-30T16:10:02.537 に答える