在Google和Drupal文檔上搜索D6的function user_load與使用的here相同。如何在Drupal 7中通過電子郵件地址加載用戶對象?
D7中的user_load功能需要一個UID,而D6版本足夠靈活以允許電子郵件地址。
任何線索我如何在D7中實現相同的目標?
謝謝
在Google和Drupal文檔上搜索D6的function user_load與使用的here相同。如何在Drupal 7中通過電子郵件地址加載用戶對象?
D7中的user_load功能需要一個UID,而D6版本足夠靈活以允許電子郵件地址。
任何線索我如何在D7中實現相同的目標?
謝謝
...或你可以只使用user_load_by_mail:http://api.drupal.org/api/drupal/modules--user--user.module/function/user_load_by_mail/7
在Drupal論壇上得到答案。主要涉及與電子郵件直接從數據庫中裝載相關用戶ID和成功運行,然後... user_load
function my_module_load_user_by_mail($mail){
$query = db_select('user', 'u');
$uid = $query->fields('u', array('uid'))->condition('u.uid', $mail)->execute()->fetchField();
if($uid){
return user_load($uid);
}else{
return FALSE;
}
}
模塊功能,而不是調用並且電子郵件...
$user = my_module_load_by_mail($mail);
只爲背景,user_load_from_mail()的代碼依賴於傳遞給user_load_multiple()一個$條件參數已在8
0被棄用這裏是我將來可能會用到user_load_from_mail()中的代碼的代碼。
<?php
function load_user_by_email($email)
{
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user')
->propertyCondition('mail', $email);
$result = $query->execute();
// not found?
if (!isset($result['user'])) return;
// found, keys are uids
$uids = array_keys($result['user']);
$account = user_load($uids[0]);
return $account;
}
Nb。理論上,由於drupal堅持電子郵件是獨一無二的,所以不需要檢查返回的2+值。
這就行了!謝謝!! – Dayo