@jenny_sunny

Вывести данные пользователя из личного кабинета при оформлении заказа в Битрикс?

Здравствуйте!
Имеется сайт на 1С-Битрикс.

Человек добавляет товар в корзину, если пользователь авторизован, то переходит к оформлению заказа.
При оформлении заказа нужно вывести данные пользователя из личного кабинета, то есть, его имя, телефон, чтобы пользователю не нужно было заполнять.

Как это можно сделать?
  • Вопрос задан
  • 3678 просмотров
Пригласить эксперта
Ответы на вопрос 2
serjazz
@serjazz
developer and dancer
Если пользователь авторизован, то у него заполнена глобальная переменная $USER, которая содержит его авторизационные данные, т.е. делаете:
global $USER; 
echo '<pre>';
print_r($USER):
echo '</pre>';

и после она вам возвращает объект со следующими полями
Т.е. со всей информацией что есть в профиле.

Я так понимаю что вам нужно это при первой покупке пользователя, т.к. если пользуетесь стандартными компонентами битрикс для заказа, профиль покупателя будет сохранен и в последующем все данные будут подставляться уже автоматически если пользователь авторизован.
Ответ написан
Комментировать
@DennisPetrov
Задача решается несколькими разными способами, например при регистрации пользователя сразу создавать профиль покупателя и заполнять его значениями из основного профиля. Про это почитать можно здесь

Также можно заполнять значения в result_modifier.php, я остановился в результате на таком подходе, правда не могу сказать, что он является оптимальным.

В result_modifier.php sale.order.ajax получаем данные текущего пользователя, затем передаем их в объект, используемый в js. В моем случае это было удобно было сделать в цикле, так как свойств много. Предварительно я установил символьные коды свойств заказа такими же, как у соответствующих свойств из профиля пользователя ( например в профиле для поля "юридический адрес" код - UF_LEGAL_ADDRESS, соответственно в свойствах заказа символьный код этого свойства сделал таким же)
$currentUser = CUser::GetByID($USER->GetParam('USER_ID'));
$arUser = $currentUser->Fetch();
foreach ($arResult["JS_DATA"]["ORDER_PROP"]['properties'] as $propKey => $propItem) {
	if (array_key_exists($propItem["CODE"], $arUser)
	 && !empty($arUser[$propItem["CODE"]]) 
	 && empty($propItem["VALUE"][0]) ) {
		$arResult["JS_DATA"]["ORDER_PROP"]['properties'][$propKey]["VALUE"][0] = $arUser[$propItem["CODE"]];
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы