@krispey102

Bitrix как передать переменную с одного шаблона на другой и использовать её?

в шаблоне страницы вызывается компонент с элементами, мне нужно этот компонент фильтровать по значениям, берущимся из result_modifier.php. Сам result_modifier.php это файл компонента который вызывается на странице. Как передать переменную из result_modifier на общую страницу где вызывается этот компонент? Пробовал через глобальную переменную, но основная страница не видит её, пробовал также через отложенную функцию, на основной странице вызывается, но использовать эту переменную я не могу. Через что можно еще передать переменную из одного шаблона в другой?
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 2
BornToFreeFall
@BornToFreeFall
Sielu ilman ihmistä
Выхода два:
1. Глобальной переменной $GLOBALS['SOME_VARIABLE_NAME'] = $SOME_VARIABLE_VALUE
2. Класс-обертка (сразу говорю, пример подсмотрел, нужно было сделать аналогичную реализацию):
Class GarbageStorage{
  private static $globalStorage = [];
  public static function set ($storageName,  $variableValue){ self::$globalStorage[$storageName] = $variableValue;}
  public static function get ($storageName){ return self::$globalStorage[$storageName];}
}
соответственно использование
\GarbageStorage::set("SomeIdentificator",  $arResult["ID"]);                      // Устанавливаем значение
\GarbageStorage::get("SomeIdentificator");                                               // Получаем значение
Ответ написан
@tgarl
result_modifier.php - тут конечно вы можете получить свои данные, но их нужно поместить в кеш компонента, если отсутвуют уже там, чтобы передать в component_epilog.php
Если вам данные не нужны в template, то и получать их можно сразу в там же не задействуя result_modifier.
а там уже все просто
$GLOBALS['peremen'] = $arResult["AR_LIST_SERVICES_FILTER"];

теперь ниже за пределами компонента ниже у вас есть $peremen, которую передаете в компонент в виде параметра

...
'NEW_PARAM'=>$peremen,
...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы