Задать вопрос
@toorr2p
https://github.com/Cleverscript

Почему ломается навигация в bitrix:main.ui.grid при включенном кешировании в компоненте?

Здравствуйте, подскажите пожалуйста что нужно сделать что бы исправить баг при включенном кешировании в кастомном компоненте, который выводит в своем templates/.default/template.php компонент грида bitrix:main.ui.grid
если данные берутся из кеша то ломается навигация.
Компонент грида подключаю в template.php так

<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

/**
 * @var $this CBitrixComponentTemplate
 * @var CMain $APPLICATION
 * @var array $arParams
 * @var array $arResult
 */

$this->setFrameMode(true);

$APPLICATION->IncludeComponent(
    'bitrix:main.ui.grid',
    '',
    [
        'GRID_ID' => $arResult['GRID_ID'],
        'COLUMNS' => $arResult['COLUMNS'],
        'ROWS' => $arResult['ROWS'],
        'NAV_OBJECT' => $arResult['NAV_OBJECT'],
        'ALLOW_SORT' => $arResult['ALLOW_SORT'],
        "AJAX_MODE" => "N",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_HISTORY" => "N",
        "SHOW_ROW_CHECKBOXES" => $arResult['SHOW_ROW_CHECKBOXES'] == 'N',
        "SHOW_SELECTED_COUNTER" => true,
        "SHOW_PAGESIZE" => true,
        "TOTAL_ROWS_COUNT" => $arResult['TOTAL_ROWS_COUNT'],
        'PAGE_SIZES' => [
            ['NAME' => '10', 'VALUE' => '10'],
            ['NAME' => '20', 'VALUE' => '20'],
            ['NAME' => '50', 'VALUE' => '50'],
            ['NAME' => '100', 'VALUE' => '100']
        ],
    ],
    $this->getComponent()
);
?>
<?php if (!empty($arParams['AJAX_LOADER'])) { ?>
    <script>
        BX.addCustomEvent('Grid::beforeRequest', function (gridData, argse) {
            if (argse.gridId != '<?=$arResult['GRID_ID'];?>') {
                return;
            }

            argse.method = 'POST'
            argse.data = <?= \Bitrix\Main\Web\Json::encode($arParams['AJAX_LOADER']['data']) ?>
        });
    </script>
<?php } ?>


684ebd20141d4400658172.png
при клике на пункты навигации, в консоли ошибки
684ebd3d9c07d943665984.jpeg
  • Вопрос задан
  • 10 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
я вижу 2 пути решения проблемы:
1) поискать по ядру файл с BX.Loader и обеспечить его обязательное подключение,
2) вынести вызов грида в component_epilog.php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы