За последние 24 часа нас посетили 22704 программиста и 1207 роботов. Сейчас ищут 893 программиста ...

Bitrix и инфоблоки

Тема в разделе "PHP для новичков", создана пользователем Денисseg, 20 авг 2020.

  1. Денисseg

    Денисseg Новичок

    С нами с:
    18 июл 2020
    Сообщения:
    5
    Симпатии:
    0
    Помогите разобраться. Добавил в инфоблок 2 дополнительных поля и теперь надо их обработать.
    раньше обработчик выглядел вот так:
    Код (Text):
    1. $orderItemList = array();
    2.  
    3. $basketModel = new Deliverysushi\Models\Basket();
    4. $basketContent = unserialize($order['BASKET_CONTENT']);
    5. $basketItems = $basketModel->getBasketContent($basketContent);
    6.  
    7. foreach ($basketItems['products'] as $k => $bi) {
    8.  
    9. if($bi['LOCAL_SUM'] == "" || $bi['LOCAL_SUM'] == "0")
    10. {
    11. continue;
    12. }
    13.  
    14. $productBitrixItemProperty = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "ID_IIKO"))->fetch();
    15. $productBitrixItemModifier = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "REQUIREDMODIFIERS"))->fetch();
    16. $productBitrixItemModifierGroup = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "MODIFIERSGROUP"))->fetch();
    17. $productBitrixItemModifierGroupName = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "MODIFIERSGROUPNAME"))->fetch();
    18. $orderItem = new OrderItem();
    19. $orderItem->id = $productBitrixItemProperty['VALUE'];
    20. $orderItem->amount = $bi['AMOUNT'];
    21. $orderItem->sum = str_replace(" ", "", $bi['LOCAL_SUM']);
    22.  
    23. if($productBitrixItemModifier["VALUE"] != "" && $productBitrixItemModifierGroup["VALUE"] == "") {
    24.  
    25. $orderItemModifierArray = array();
    26. $orderItemModifier = new OrderItemModifier();
    27. $orderItemModifier->id = $productBitrixItemModifier["VALUE"];
    28. $orderItemModifier->amount = 1;
    29. array_push($orderItemModifierArray, $orderItemModifier);
    30. $orderItem->modifiers = $orderItemModifierArray;
    31. }
    32. else if($productBitrixItemModifier["VALUE"] != "" && $productBitrixItemModifierGroup["VALUE"] != "") {
    33. $orderItemModifierArray = array();
    34. $orderItemModifier = new OrderItemModifierGroup();
    35. $orderItemModifier->id = $productBitrixItemModifier["VALUE"];
    36. $orderItemModifier->amount = 1;
    37.  
    38. $orderItemModifier->groupId = $productBitrixItemModifierGroup["VALUE"];
    39. $orderItemModifier->groupName = $productBitrixItemModifierGroupName["VALUE"];
    40.  
    41. array_push($orderItemModifierArray, $orderItemModifier);
    42. $orderItem->modifiers = $orderItemModifierArray;
    43.   }
    44. //-----------------------------------------------------------------------------------------------------------------------------
    45. //-------------------------------------------------------------------------------------------------------------------------
    46.  
    47. array_push($orderItemList, $orderItem);
    48. }
    49. $orderIiko->items = $orderItemList;
    теперь после добавления 2 доп полей REQUIREDMODIFIERS2 и REQUIREDMODIFIERS3
    добавил
    Код (Text):
    1. $productBitrixItemModifier2 = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "REQUIREDMODIFIERS2"))->fetch();
    2. $productBitrixItemModifier3 = \CIBlockElement::GetProperty(self::PRODUCT_IBLOCK_ID, $bi[ID], array(), array("CODE" => "REQUIREDMODIFIERS3"))->fetch();
    и в блок IF добавил
    Код (Text):
    1. $orderItemModifierArray = array();
    2. $orderItemModifier = new OrderItemModifier();
    3. $orderItemModifier->id = $productBitrixItemModifier2["VALUE"];
    4. $orderItemModifier->amount = 1;
    5. $orderItemModifierArray = array();
    6. $orderItemModifier = new OrderItemModifier();
    7. $orderItemModifier->id = $productBitrixItemModifier3["VALUE"];
    8. $orderItemModifier->amount = 1;
    как итог в результат падает только 3 поле. первые 2 он игнорирует если 2 и 3 не заполнять то в результат падает 1 поле. Как сделать чтобы при заполненных полях они падали в результат все заполненные а не последний? Понимаю что решение простое) Но я только начал в это вникать все(не программист совсем)