Сергей Эсауленко

Разделяем ФИО на самостоятельные поля в компоненте sale.order.ajax

Оглавление:

    Иногда возникают ситуации, когда необходимо в компоненте sale.order.ajax раздели с строку ФИО на отдельные поля Фамилия, Имя, Отчество. Но при этом не утратить штатный функционал формирования профилей покупателя. На помощь приходят обработчик OnSaleComponentOrderJsData , который позволяет разбить полученную информацию на отдельные подстроки.


    $eventManager->addEventHandler('sale', 'OnSaleComponentOrderJsData', 'OnSaleComponentOrderJsDataCustom');
    function OnSaleComponentOrderJsDataCustom(&$arResult, &$arParams){


    /**@global \CUser $USER */
    global $USER;
    if ($USER->IsAuthorized()
    && ($user_info = \Bitrix\Main\UserTable::getList([
    'filter' => [
    '=ID' => $USER->GetID(),
    ],
    'select' => [
    'EMAIL',
    'NAME',
    'LAST_NAME',
    'SECOND_NAME',
    'PERSONAL_PHONE',
    ],
    ])->fetch())
    ) {

    foreach($arResult['JS_DATA']['ORDER_PROP']['properties'] as &$prop) {
    if (!empty(reset($prop['VALUE']))) {
    continue;
    }
    switch($prop['CODE']) {
    //ФИО
    case 'FIO':
    $name_parts = [];
    foreach([
    'LAST_NAME',
    'NAME',
    'SECOND_NAME',
    ] as $name_key) {
    if (empty($user_info[$name_key])) {
    continue;
    }
    $name_parts[] = $user_info[$name_key];
    }
    $prop['VALUE'] = [
    implode(' ', $name_parts)
    ];
    break;

    //Имя
    case 'CONTACT_NAME':
    $prop['VALUE'] = $user_info['NAME'];
    break;

    // Фамилия
    case 'CONTACT_LAST_NAME':
    $prop['VALUE'] = $user_info['LAST_NAME'];
    break;

    // Отчество
    case 'CONTACT_SECOND_NAME':
    $prop['VALUE'] = $user_info['SECOND_NAME'];
    break;

    // Телефон
    case 'PHONE':
    $prop['VALUE'] = $user_info['PERSONAL_PHONE'];
    break;

    // Email
    case 'EMAIL':
    $prop['VALUE'] = $user_info['EMAIL'];
    break;

    }
    }
    unset($prop);
    }
    }
    06.07.2021
    1C-Битрикс или Wordpress: какую CMS выбрать для лучшей работы сайта?