Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (6)

Лучшие ответы пользователя

Все ответы (11)
  • Bitrix\Highloadblock\HighloadBlockTable как получить ID блока по названию?

    ragnar_ok
    @ragnar_ok
    Для решения задачи не нужно знать ID highloadblock'a и использовать дополнительную функцию-обертку (GetEntityDataClass($HL_BLOCK_ID)); в Вашем примере).

    Вы можете получить то, что Вам нужно одной строкой:

    Highloadblock\HighloadBlockTable::compileEntity('НАЗВАНИЕ')->getDataClass(); // указываете сразу название вместо ID


    Возможно стоит написать функцию-обертку для того, чтобы ловить исключения, которые пробрасывает метод compileEntity:

    function compileEntity($entity): ?Base
        {
            try {
                return Highloadblock\HighloadBlockTable::compileEntity($entity);
            } catch (SystemException $systemException) {
                // что-нибудь
                return null;
            }
        }
    Ответ написан
  • Как формируется INPUT в Битрикс?

    ragnar_ok
    @ragnar_ok
    Не "недра ядра", конечно, но если вы хотите использовать $arItem["INPUT"], то компонент кастомизировать придется. Input'ы формируются в component.php:
    bitrix:catalog.filter: /bitrix/components/bitrix/catalog.filter/component.php:411
    (Привет, MVC!).

    Вы можете обойтись без кастомизации компонента. Для этого просто изучите $arResult компонента. Там вы найдете все, что нужно для формирования input'a (например, массив LIST для атрибута value). Избавьтесь от $arItem["INPUT"] в своем шаблоне и сформируйте свой input. В Вашем случае это будет выглядеть примерно так:
    <?foreach ($arItem["LIST"] as $key => $value):?>
        <div class="sp_div_block_1">
            <label class="section_position__form_sp__label"><?= $arItem["NAME"] ?></label>
            <input type="radio" name="<?=$arItem["INPUT_NAME"]?>" value="<?=htmlspecialcharsBx($key)?>"/>
        </div>
    <?endforeach;?>
    Ответ написан
  • Как выполнить редирект на страницу 500.php?

    ragnar_ok
    @ragnar_ok Автор вопроса
    С товарищем обнаружили, что в Bitrix\Main\Diag\ExceptionHandler вызывается set_exception_handler(function () {}).

    Отталкиваясь от ExceptionHandler в init.php указал следующее:
    if (!Bitrix\Main\Config\Configuration::getValue('exception_handling')['debug']) { // если 'exception_handling' => ['value' => ['debug' => false]]
        set_exception_handler(function ($exception) {
            (new Bitrix\Main\Diag\ExceptionHandler())->writeToLog($exception, Bitrix\Main\Diag\ExceptionHandlerLog::UNCAUGHT_EXCEPTION); // логируем
            LocalRedirect('/500.php');
            exit;
        });
    }

    Таким образом, при возникновении внутренней ошибки PHP в случае, если debug отключен, то происходит редирект на страницу /500.php. И не пришлось расширять класс.
    Ответ написан
  • Битрикс: CSaleBasket::Update - почему модифицируется количество, а цена нет?

    ragnar_ok
    @ragnar_ok Автор вопроса
    Вот и ответ:
    $arFields = array(
                "CALLBACK_FUNC" => "",
                "PRODUCT_PROVIDER_CLASS" => "",
                "CUSTOM_PRICE"      => "Y",
                "IGNORE_CALLBACK_FUNC"  => "Y"
            );

    Существует два параметра: "CUSTOM_PRICE", "IGNORE_CALLBACK_FUNC". Они позволяют отключать GetOptimalPrice и использовать кастомную цену.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (63)