Информация, предоставленная компанией Linas, является предположительно неправильной. Использование entity_metadata_wrapper
с идентификатором объекта полностью в порядке. Функция использует uid
внутренне, только если вы передаете ей объект, в противном случае он передает аргумент непосредственно EntityDrupalWrapper
.
В конечном итоге вызывается метод set
, который гласит: «Переопределено для поддержки установки объекта либо объектом, либо идентификатором».
Этот базовый код продемонстрирует рабочий вызов entity_metadata_wrapper
с идентификатором пользователя.
$wrapper = entity_metadata_wrapper('user', 1);
dpm($wrapper->value());
Выход будет массивом всех данных, принадлежащих пользователю admin.
Проблема, с которой вы сталкиваетесь, не связана с передаваемыми аргументами (предполагается, что значение $uid
) и требует дополнительной информации для устранения неполадок.
Метод явно говорит: // Если переданный объект является глобальным пользователем $, мы загружаем объект пользователя только // передавая идентификатор пользователя. Глобальный пользователь не является полностью загруженным объектом. if ($ type == 'user' && is_object ($ data) && $ data == $ GLOBALS ['user']) { $ data = $ data-> uid; } Так что я вижу, что он все равно использует uid. – NickOpris
Функция использует uid внутренне для загрузки пользовательских данных $ data = $ data-> uid; в случае, если это глобальный объект $ user, поэтому он всегда ожидает объект (пользовательский объект или глобальный пользователь), вы можете написать свою собственную функцию обертки, если вы так хотите использовать uid, но факт в том, что эта функция вернет вас ничего, если вы передадите uid, и вы можете ясно видеть его в коде, который вы вставили. – Linas