Есть ли способ получить UID от имени пользователя в Drupal? - PullRequest
9 голосов
/ 04 октября 2010

Есть ли какая-либо основная функция для получения UID от имени пользователя в Drupal? Или я должен выполнить запрос БД? мое поле является текстовым полем с '#autocomplete_path', равным 'user / autocomplete'

Ответы [ 5 ]

11 голосов
/ 05 октября 2010

Вы можете использовать функцию user_load.См. http://api.drupal.org/api/function/user_load/6

В частности, см. http://api.drupal.org/api/function/user_load/6#comment-6439

Итак, вы бы сделали что-то вроде этого:

// $name is the user name
$account = user_load(array('name' => check_plain($name)));
// uid is now available as $account->uid
10 голосов
/ 05 сентября 2012

Каким-то образом я не смог заставить запрос работать, но я нашел это:

$user = user_load_by_name($username);
$user_id = $user->uid;

см .: http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7

5 голосов
/ 17 июня 2011

Функция пользовательской загрузки очень тяжелая, она потребляет больше ресурсов и возвращает больше данных, чем требуется. Вот небольшая функция для вас:

function get_uid($username)
{    
    // Function that returns the uid based on the username given
    $user = db_fetch_object(db_query("SELECT uid FROM users WHERE name=':username'", array(":username" => $username)));

    return $user->uid;
}

Примечание: этот код исправлен, и ввод экранирован, поэтому код не представляет опасности.

2 голосов
/ 26 января 2013

Вы можете получить всю информацию о зарегистрированном пользователе с помощью глобальной переменной $user.

Код:

<?php
global $user;
$uid = $user->uid;
echo $uid;
?>
0 голосов
/ 05 октября 2010

Для этого нет готовой API-функции, о которой я не знаю. Но вы можете сделать свой собственный, если вам нужно несколько мест. Это должно быть довольно просто и просто запросить в БД UID.

...