drupal-7 - 通过托管实体对象和包装器访问 Drupal 7 中的位置字段

标签 drupal-7

我在 Drupal 7 中使用 Location 模块(尤其是它的 Location CCK 部分)。向用户添加了位置字段“field_location”(作为托管实体的示例),并在用户编辑界面中为测试用户初始化了位置值。但是,我无法访问当前用户的位置数据:

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();

我已经阅读了有关此主题的许多帖子,但是还没有找到可行的解决方案,希望对此有见解。

最佳答案

位置模块本身不支持开箱即用的实体 API/元数据包装器。但是,它与 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];

这并不优雅,但它是一个没有额外模块的解决方案。任你选。

关于drupal-7 - 通过托管实体对象和包装器访问 Drupal 7 中的位置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302973/

相关文章:

Drupal 7 - 在字段上方放置字段描述

image - 在节点字段中嵌入外部图像链接,而不将它们下载到自己的站点?

php - 用于将 csv 文件插入 mysql 数据库的 Drupal 模块

sql - 条件 AND OR 与 Drupal db_select

php - DRUPAL 中关于 mysql_num_rows() 的错误

javascript - 未定义不是函数,所见即所得 drupal7

mysql - 无法通过其他服务器上的mysql连接

drupal-7 - 在 Drupal 8 中删除内容文件

php - 在 Drupal 7 中使用 RESTful 模块创建用户 API

javascript - 使用 Jquery 了解 Drupal 7 表单中的匿名用户