Блог Горошко Андрея 1C-Битрикс Передача данных из PHP в JavaScript: CUtil::PhpToJSObject

Передача данных из PHP в JavaScript: CUtil::PhpToJSObject

Частая задача: передать конфигурацию, переводы или данные из компонента ($arResult) в JavaScript-файл (script.js).

Новички часто пишут echo json_encode($arResult), но в Битрикс есть более специализированный инструмент.

Метод CUtil::PhpToJSObject($data, $bWS, $bSkipNativeFunctions, $bReturnObject)

Он преобразует PHP-переменную в валидную JS-строку (объект или массив).

Базовое использование

В файле template.php:

<?php
$jsData = [
    'ITEM_ID' => 123,
    'NAME' => "iPhone 'Pro'", // Кавычки будут экранированы
    'PRICES' => [100, 200, 300],
    'IS_AVAILABLE' => true
];
?>

<script>
    // Передаем данные в глобальную переменную или в конфиг класса
    var myProductConfig = <?= CUtil::PhpToJSObject($jsData) ?>;
    
    console.log(myProductConfig.NAME); // iPhone 'Pro'
</script>

Параметры метода

  1. $data: Данные (массив, строка, число, bool).
  2. $bWS (bool): Добавлять ли переносы строк (false — в одну строку, компактно).
  3. $bSkipNativeFunctions (bool): Экранировать ли ключи (обычно false).
  4. $bReturnObject (bool): Вернуть JSON-объект или JS-объект? (обычно false).

Особенность: Ключи и кавычки

CUtil::PhpToJSObject отличается от json_encode тем, что он может генерировать ключи объекта без кавычек (если они валидны для JS), что немного уменьшает размер кода, и корректно обрабатывает специфичные для Битрикс типы данных.

Пример использования в классе JS:

// template.php
<script>
    BX.ready(function(){
        new MyComponent.Class(
            <?= CUtil::PhpToJSObject($arResult['JS_PARAMS']) ?>
        );
    });
</script>

Вывод:
Используйте CUtil::PhpToJSObject во всех шаблонах компонентов для проброса данных в JS. Это безопаснее и «роднее» для экосистемы Битрикс, чем нативный json_encode, особенно при работе со старым ядром JS.

CUtil::PhpToJSObject, передать массив в JS, JSON битрикс, PHP to JS, переменные в шаблоне, Битрикс JS.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

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

Related Post

Подключение онлайн-кассы по 54-ФЗ к 1С-Битрикс (Атол Онлайн / Чек Онлайн)Подключение онлайн-кассы по 54-ФЗ к 1С-Битрикс (Атол Онлайн / Чек Онлайн)

Бесшовная интеграция сайта на 1С-Битрикс с внешними системами — это ключевое условие автоматизации продаж и масштабирования бизнеса. Услуга «Подключение онлайн-кассы по 54-ФЗ к 1С-Битрикс (Атол Онлайн / Чек Онлайн)» обеспечивает

Интеграция 1С-Битрикс с 1С:Бухгалтерия предприятия 8.3Интеграция 1С-Битрикс с 1С:Бухгалтерия предприятия 8.3

Бесшовная интеграция сайта на 1С-Битрикс с внешними системами — это ключевое условие автоматизации продаж и масштабирования бизнеса. Услуга «Интеграция 1С-Битрикс с 1С:Бухгалтерия предприятия 8.3» обеспечивает выгрузка платежек, счетов, реализаций и

Верстка умного фильтра с цветовыми свотчами, градиентами и текстурами материаловВерстка умного фильтра с цветовыми свотчами, градиентами и текстурами материалов

Профессиональный frontend-инжиниринг и адаптивная верстка макетов под 1С-Битрикс являются ключевыми факторами высокой конверсии и удержания покупателей. Услуга «Верстка умного фильтра с цветовыми свотчами, градиентами и текстурами материалов» обеспечивает наглядный выбор