Программирование: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
 
(Не показано 7 проміжних версій цього користувача)
Рядок 8: Рядок 8:
my $field = $user_data->get_field('fio');
my $field = $user_data->get_field('fio');
$field->new_value('Илья Крутой');
$field->new_value('Илья Крутой');
$fields->save({ logging=>1 });
$user_data->save({ logging=>1 });
</pre>
</pre>


Рядок 14: Рядок 14:
|-
|-
|UserData->get
|UserData->get
|Получили данные юзера с id=1
|Получение данных юзера с id=1
|-
|-
|$user_data->get_field
|$user_data->get_field
Рядок 22: Рядок 22:
|установка нового значения поля fio
|установка нового значения поля fio
|-
|-
|fields->save
|$user_data->save
|запись нового значения поля fio в базу данных
|запись нового значения поля fio в базу данных
|}
|}
Рядок 69: Рядок 69:
UserData->get(123, ['d']);
UserData->get(123, ['d']);
</pre>
</pre>
Получаем только допданные, т.е поля name, fio, balance будут недоступны.
Получаем только допданные, т.е поля name, fio, balance будут недоступны. Параметр tables есть смысл указывать если выхотите слегка улучшить производительность. Например, если вам не нужны допданные, то можно не выполнять лишний sql для их получения.


====Получение поля из данных пользователя====
====Получение поля из данных пользователя====
Рядок 83: Рядок 83:
</pre>
</pre>


'''Отличие get_field и get_field_if_enabled'''. Поле может существовать в одной группе и отсутствовать в другой -в допполях ставится галка в каких группах оно актуально. Также, в основных данных, например у оборудования не может быть ФИО. get_field_if_enabled проверяет есть ли данное поле у юзера и возвращает undef вместо поля если доступа нет.
'''Отличие get_field и get_field_if_enabled'''. Поле может существовать в одной группе и отсутствовать в другой - в допполях ставится галка в каких группах оно актуально. Также, в основных данных, например у оборудования не может быть ФИО. get_field_if_enabled проверяет есть ли данное поле у юзера и возвращает undef вместо поля если оно не может существовать в данной учетке.


Пример:
Пример:


<pre>
<pre>
my $phone_field =user_data->get_field_if_enabled('_adr_phone') or Error('У данной учетной записи не может быть телефон');
my $user_data = UserData->get(123);
my $phone_field = $user_data->get_field_if_enabled('_adr_phone') or Error('У данной учетной записи не может быть телефон');
Show $phone_field->show();
</pre>
</pre>

Поточна версія на 18:50, 28 серпня 2022

Данный раздел не закончен и предназначен для версии NoDeny Next

Работа с данными пользователя

Пример 1

Require_web_mod('Data');
my $user_data = UserData->get(1);
my $field = $user_data->get_field('fio');
$field->new_value('Илья Крутой');
$user_data->save({ logging=>1 });
UserData->get Получение данных юзера с id=1
$user_data->get_field получение поля с именем fio
$field->new_value установка нового значения поля fio
$user_data->save запись нового значения поля fio в базу данных

Пример 2

Require_web_mod('Data');
my $user_data = UserData->get(1);
foreach my $field( $user_data->only_enabled_fields() )
{
   Show( $field->{title}.' = '.$field->show().'<br>');
}
UserData->get Получили данные юзера с id=1
$user_data->only_enabled_fields получаем все поля юзера
Show выводим поочередно имя поля и значение

Детальнее

Получение данных пользователя

UserData->get(uid, [tables]);

Параметры:

uid обязательный id юзера
tables необязательный список таблиц, из которых брать данные: u - основные данные, d - дополнительные. Если не задан данные берутся из таблиц u и d.

Пример:

UserData->get(123, ['d']);

Получаем только допданные, т.е поля name, fio, balance будут недоступны. Параметр tables есть смысл указывать если выхотите слегка улучшить производительность. Например, если вам не нужны допданные, то можно не выполнять лишний sql для их получения.

Получение поля из данных пользователя

user_data->get_field(field_name);

а также

user_data->get_field_if_enabled(field_name);

Отличие get_field и get_field_if_enabled. Поле может существовать в одной группе и отсутствовать в другой - в допполях ставится галка в каких группах оно актуально. Также, в основных данных, например у оборудования не может быть ФИО. get_field_if_enabled проверяет есть ли данное поле у юзера и возвращает undef вместо поля если оно не может существовать в данной учетке.

Пример:

my $user_data = UserData->get(123);
my $phone_field = $user_data->get_field_if_enabled('_adr_phone') or Error('У данной учетной записи не может быть телефон');
Show $phone_field->show();