Блог Горошко Андрея 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.

Мой рейтинг:

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

Related Post

1с Битрикс фильтрация по свойству элементов1с Битрикс фильтрация по свойству элементов

Средний рейтинг Еще нет оценок В Битриксе вы можете использовать различные условия выборки с помощью фильтрации в параметре 'filter' при вызове метода getList() или других методов выборки данных. Вот несколько

CRUD-операции в Bitrix D7 ORM: add, update, delete на практикеCRUD-операции в Bitrix D7 ORM: add, update, delete на практике

Средний рейтинг Еще нет оценок Мы уже рассмотрели, как выбирать данные с помощью getList в D7 ORM. Теперь давайте разберем полный цикл CRUD-операций (Create, Read, Update, Delete), который позволяет полностью управлять данными

Работа с паролями в D7: Хеширование и проверка с Bitrix\Main\Security\PasswordРабота с паролями в D7: Хеширование и проверка с Bitrix\Main\Security\Password

Средний рейтинг Еще нет оценок При работе с CUser::Add Битрикс сам хеширует пароль. Но если вы используете D7 ORM (\Bitrix\Main\UserTable::add) или пишите свою систему авторизации, вам нужно работать с хешами вручную. Класс Bitrix\Main\Security\Password предоставляет