Вход Регистрация
*— обязательные для заполнения поля
Войти через социальные сети

[Bitrix vars] Переменные component.php

15.11.2016

Глобальные переменные 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();
Комментарии
Получать ответы на почту