FAQ и советы Битрикс
Переменные, доступные в компоненте 2.0 Битрикс
В файлах компонентов доступны стандартные компоненты, благодаря которым можно строить, к примеру, относительные пути. Такие компоненты избавляют от необходимости прописания абсолютных величин в файлах компонента.
1. В файле component.php доступны (в файле самого компонента):
очевидные и постоянно используемые:
- $arParams — параметры, чтение/изменение, затрагивает одноименный член класса компонента
- $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента
- $APPLICATION, $USER, $DB — все доступны, можно не объявлять их как global в файле component.php
- $this — естественно ссылка на текущий вызванный компонент (объект класса CBitrixComponent), можно использовать все методы класса CBitrixComponent
дополнительные, локальные для удобства:
- $componentPath — путь к вызванному компоненту от DOCUMENT_ROOT (пример: /bitrix/components/bitrix/iblock.list)
- $componentName — имя вызванного компонента (например: bitrix:iblock.list)
- $componentTemplate — шаблон вызванного компонента (например: «my_template»)
аналогичные значения, если компонент вызван в составе другого компонента, идут отсылки на родительский компонент:
- $parentComponentPath
- $parentComponentName
- $parentComponentTemplate
2. В файле result_modifier.php доступны (в файле модификации шаблона компонента):
- $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента, но изменения тут отразятся на $arParams в файле template.php
- $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента
- $APPLICATION, $USER, $DB - как обычно, объявлять их как global избыточно $this — ссылка на текущий шаблон (объект, описывающий шаблон, тип CBitrixComponentTemplate)
3. В файле template.php доступны:
- $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента
- $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента (ссылка на поле компонента)
- $APPLICATION, $USER, $DB — как обычно, объявлять их как global избыточно
- $this - ссылка на текущий шаблон (объект, описывающий шаблон, тип CBitrixComponentTemplate)
- $templateName — имя шаблона компонента (например: «.dеfault»)
- $templateFile — путь к файлу шаблона от DOCUMENT_ROOT (напр. «/bitrix/components/wexpert/iblock.list/templates/.default/template.php»)
- $templateFolder - путь к папке с шаблоном от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default»)
- $componentPath - путь к папке с компонентом от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list»)
- $component — ссылка на текущий вызванный компонент (тип CBitrixComponent)
- $templateData — массив для записи, обратите внимание, таким образом можно передать данные из template.php в файл component_epilog.php, причем эти данные попадают в кеш, т.к. файл component_epilog.php исполняется на каждом хите.
4. В файле component_epilog.php (эпилог компонента) доступны:
- $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента
- $arResult — результат, чтение/изменение не затрагивает одноименный член класса компонента
- $APPLICATION, $USER, $DB — аналогично, эта «троица» доступна
- $componentPath — путь к папке с компонентом от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list»)
- $component — ссылка на $this, читай на строку ниже
- $this — естественно ссылка на текущий вызванный компонент (объект класса CBitrixComponent), можно использовать все методы класса CBitrixComponent
дополнительные, не явные в component_epilog.php:
- $epilogFile — путь к файлу component_epilog.php относительно DOCUMENT_ROOT
- $templateName - имя шаблона компонента (например: «.dеfault»)
- $templateFile — путь к файлу шаблона от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default/template.php»)
- $templateFolder — путь к папке с шаблоном от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default»)
- $templateData — обратите внимание, таким образом можно передать данные из template.php в файл component_epilog.php, причем эти данные закешируются и будут доступны в component_epilog.php на каждом хите!
и в конце, небольшой пример: чтобы получить в result_modifier.php значение $templateFolder, необходимо воспользоваться методами текущего шаблона:
1 |
$ this ->__component->__template->__folder
|
1 |
$ this ->GetFolder();
|
1 |
$ this ->__folder
|
Чтобы передать данные из вложенного в комплексный компонента, можно в компоненте-потомке обратиться к результирующему массиву родительского компонента:
1 |
$ this ->__component->getParent()->arResult[ 'CHILD_DATA' ] = array(.....); |
5. Как передать в script.js шаблона компонена путь к папке, шаблона:
В файле шаблона, template.php, прописываем:
1 2 3 4 5 |
<script> BX.message({ TEMPLATE_PATH: '<? echo $this->GetFolder(); ?>' }); </script> |
И в файле script.js можем этот путь получить:
1 |
var folderPath = BX.message( 'TEMPLATE_PATH' ); |
Так же информация в виде таблицы доступна в официальной документации Битрикса: Курс Разработчик Bitrix Framework
Количество показов: 14372
Источник: http://pai-bx.com/wiki/1c-bitrix/13-variables-available-in-component-2-0/