Обязательные пользовательские поля и автоматическая регистрация

Обязательные пользовательские поля и автоматическая регистрация

1063
31.10.2017
07.08.2018

Что делать, если у вас есть обязательные пользовательские поля для сущности CUser и вы используете автоматическую регистрацию при оформлении заказа через sale.order.ajax ? Как вариант, можно кастомизировать компонент оформления заказа (благо есть наследование компонентов) и внести нужные правки в код оформления заказа, а можно воспользоваться другим решением, без кастомизаций.

Итак, что я предлагаю: на странице оформления заказа (обычно это /personal/order/make/) до подключения компонента одношагового оформления заказа, необходимо определить константу:

define('MAKE_ORDER_PAGE','Y');

Далее, пишем обработчик для события добавления пользователя и в нем вписываем нужное значение. Рассмотрим на примере свойства "Телефон" (не знаю, зачем делали доп.свойство, когда есть штатные, но уже будет так). Значение поля с телефоном можно получить из заполнненных в заказе полей:

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('main', 'OnBeforeUserAdd', array('CInit','OnBeforeUserAddHandler'));
class CInit{
	function OnBeforeUserAddHandler(&$arFields){
		if(defined('MAKE_ORDER_PAGE') && MAKE_ORDER_PAGE=='Y'){
			if(isset($_REQUEST['ORDER_PROP_3'])){
				$arFields['UF_PHONE'] = $_REQUEST['ORDER_PROP_3'];
			}
		}
	}
}

Таким образом, получим заполненное обязательное поле.



Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку