Глобальные переменные Bitrix vars
доступные в компоненте component.php
задаются в самом вначале файла и появляется их автокомплит в PhpStorm.
Ниже пример файла component.php
и самых частых методов и параметров используемых при создании своего компонента, код иногда здесь обновляется.
<?
/**
* Bitrix vars
*
* @var CBitrixComponent $this
* @var array $arParams
* @var array $arResult
* @var string $componentPath
* @var string $componentName
* @var string $componentTemplate
*
* @var string $parentComponentPath
* @var string $parentComponentName
* @var string $parentComponentTemplate
*
* @var CDatabase $DB
* @var CUser $USER
* @var CMain $APPLICATION
*/
use Bitrix\Main;
use Bitrix\Main\Web;
use Bitrix\Main\Loader;
use Bitrix\Main\Application;
use Bitrix\Main\Localization\Loc;
if(!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
die();
//ID компонента
//$cpId = $this->getEditAreaId($this->__currentCounter);
//Объект родительского компонента
//$parent = $this->getParent();
//$parentPath = $parent->getPath();
Loc::loadMessages(__FILE__);
if(!Loader::includeModule('api.core')) {
ShowError(Loc::getMessage('API_CORE_ERROR'));
return;
}
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
$server = $context->getServer();
$oUri = new Web\Uri($request->getRequestUri());
$pageUrl = $request->getRequestUri();
if(method_exists($oUri, 'deleteParams')) {
$oUri->deleteParams(Main\HttpRequest::getSystemParameters());
$pageUrl = $oUri->getUri();
}
$arParams['HTTP_PROTOCOL'] = $request->isHttps() ? 'https://' : 'http://';
$arParams['HTTP_HOST'] = $arParams['HTTP_PROTOCOL'] . $server->getHttpHost();
$arParams['PAGE_URL'] = $arParams['HTTP_HOST'] . $request->getRequestUri();
$arParams['DIR_URL'] = $arParams['HTTP_HOST'] . $request->getRequestedPageDirectory();
$arParams['USER_IP'] = $request->getRemoteAddress();
$arParams['DISPLAY_FIELDS'] = array_diff((array)$arParams['DISPLAY_FIELDS'], array(''));
$arParams['REQUIRED_FIELDS'] = array_diff((array)$arParams['REQUIRED_FIELDS'], array(''));
$arParams['FORM_ID'] = $this->GetEditAreaId($this->randString());
if($arParams['JQUERY_ON'])
\CUtil::InitJSCore('jquery2');
$arMessage = [];
if($request->isPost() && $request['API_FORM_SUBMIT_ID'] && $arParams['API_FORM_ID'] == $request['API_FORM_ID']) {
if(!check_bitrix_sessid()) {
$arMessage['warning'][] = Loc::getMessage('API_FORM_SESSION_EXPIRED');
}
//Encode only 'post' var from request
$request->addFilter(new Web\PostDecodeFilter);
$post = $request->getPostList()->toArray();
//Encode recommend from AJAX 'UTF-8' to 'SITE_CHARSET'
if(!Application::isUtfMode())
$post = Main\Text\Encoding::convertEncoding($post, 'UTF-8', $context->getCulture()->getCharset());
if(empty($arMessage)) {
$result = $post;
}
$APPLICATION->RestartBuffer();
header('Content-Type: application/json');
echo Web\Json::encode($result);
die();
}
//Some code here
$this->IncludeComponentTemplate();