РЕШЕНО: как программно заполнить данные в профиль пользователя

Главные вкладки

Аватар пользователя denserdv denserdv 28 января 2014 в 16:43

Здравствуйте!

надо сделать заполнение поля "номер телефона" в профиле пользователя своим скриптом. Это может быть модуль, но я планирую прямо в ноде (в ск-едиторе с фильтром пхп-код) вставить скрипт, в котором будет с юзера спрашиваться номер телефона. Юзер вводит этот номер, жмет "сохранить" и надо записать этот телефон в профиль этого юзера.

Соостветственно, uid юзера известен. поле "номер телефона" создано в профиле и имеет машинное имя: field_telnum
как вписать туда введенное значение?

в инете нашел пример для добавления емаила:

<?php
$user
=user_load(7);
$user->mail 'new-email@example.com';
user_save($user);
?>

но так у меня не сработало, возможно потому что поля field_telnum нет при выводе:

<?php
global $user;
echo 
'<pre>';
print_r($user);
echo 
'</pre>';
?>

так как же записать данные в поле в профиле юзера?

РЕШЕНИЕ
смотреть все поля юзера так:


<?php
$userID
="Ваш_АйДи";
$user=user_load($userID);
echo 
'<pre>';
print_r($user);
echo 
'</pre>';
?>

а добавить номре телефона в поле так:


<?php
$userID
=1;
$telnum=555;

$user user_load($userID); // Loading account

$user->field_telnum['und'][0]['value'] = '$telnum';
user_save($user);
?>

Всем спасибо за подсказки!

Комментарии

Аватар пользователя Inj Inj 28 января 2014 в 17:27

"denserdv" wrote:
поля field_telnum нет при выводе

где ж оно хранится и отображается? Может это и не юзера добро?

Аватар пользователя denserdv denserdv 28 января 2014 в 17:31

такс, извините, я не особо программист. В моем случае поулчается как-то так чтоли:
<?php
global $user;

$userID="22"; // здесь я считаю ид залогиненного юзера
$telnum="555"; //данные полученные из формы

$user=user_load($userID);

$edit['field_telnum']=$telnum;
user_save($user,$edit);

?>

- так?

Аватар пользователя denserdv denserdv 28 января 2014 в 17:34

"Inj" wrote:
где ж оно хранится и отображается? Может это и не юзера добро?

- это добро юзера. Поле созданное в Конфигурация-Пользователи-Профили-Добавить поле

я так понимаю, это организовано модулем профайл, который встроен в друпал-7...
и поэтому при запросе:
<?php
global $user;
echo '

';
print_r($user);
echo '

';
?>
оно не выводится. Также как и другие созданные поля в профиле юзера: фио и т.п.
если зайти в редактирование профиля - то эти поля видны и в них можно вносить изменения.

Аватар пользователя Inj Inj 28 января 2014 в 17:39

а Вы сравните

<?php
global $user;
echo 
'<pre>';
print_r($user);
echo 
'</pre>';
?>

и

<?php
$userID
="Ваш_АйДи";
$user=user_load($userID);
echo 
'<pre>';
print_r($user);
echo 
'</pre>';
?>
Аватар пользователя denserdv denserdv 28 января 2014 в 18:42

ага, при таком варианте print_r($user) выводит все поля, в том числе и нужное:
...
[field_telnum] => Array
(
)
...

- хорошо, поле увидел. А как теперь в него записать данные?
$edit['field_telnum']=$telnum;
user_save($user,$edit);

- так? я значит юзер_лоад не делал просто чтоли...

Аватар пользователя Inj Inj 28 января 2014 в 18:59
<?php
$userID
=;
$telnum=;
$user=user_load($userID);
$user->field_telnum $telnum
//field_telnum указывать с полным адресом, подсмотренным в принт_р (удобнее dprint_r)
user_save($user);
?>
Аватар пользователя denserdv denserdv 29 января 2014 в 0:19

dprint_r($user);
- вообще не сработало.
а принт-р показывает поле как:

<?php
    
[field_telnum] => Array
        (
        )
?>

но указанный вами пример с $user->field_telnum = $telnum; несработал Sad - в профиле юзера не появился заполненный номер телефона.

Аватар пользователя denserdv denserdv 29 января 2014 в 0:48

ура! получилось вот так:


<?php
$userID
=1;
$telnum=555;

$user user_load($userID); // Loading account

$user->field_telnum['und'][0]['value'] = $telnum;
user_save($user);
?>