Задать вопрос
@harts_1493

Как после авторизации обновить страницу модуля Битрикс?

Здраствуйте.
Написал страничку модуля, но при авторизаций выводить пустую страницу из-за не корректного формирование javascript.
Если обновить страницу модуля, то проблема исчезает.

Ошибок нет, но некоторые мои javascript не выводиться и не инициализируются (до обновления страницы).

Такой вопрос: можно ли [или как] после авторизаций обновить страницу?

Страница:
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');

define('ADMIN_SECTION', true);
IncludeModuleLangFile(__FILE__);

global $USER;
global $APPLICATION;
use Bitrix\Main\{ Loader,Page\Asset,Localization\Loc };

$APPLICATION->SetTitle(Loc::getMessage('title.editor'));

$data = json_encode(array(
        'url'       =>'/bitrix/services/main/ajax.php?action=myapp.api',
        'data'   => array(
            'sessid'    => bitrix_sessid(),
            'user'      => $USER->GetID()
        )
));

$asset = Asset::getInstance();
$asset->addString("<script>window.myapp = {$data};</script>");
$asset->addCss('/bitrix/css/myapp/app.min.css');
$asset->addJs('/bitrix/js/myapp/app.min.js');
?>
<!doctype html>
<html lang="<?=(LANGUAGE_ID?:'ru')?>">
    <head>
        <meta charset="<?=(LANG_CHARSET?:'UTF-8')?>">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title><?=Loc::getMessage('title')?></title>
        <?$APPLICATION->ShowCSS();?>
        <?$APPLICATION->ShowHeadStrings();?>
        <?$APPLICATION->ShowHeadScripts();?>
    </head>
    <body>
        <div id="app"></div>
    </body>
</html>
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@scooby_doe
После авторизации где и куда редирект идет? На страницу с модулем?

Судя по дефайну ADMIN_SECTION это админка.

При авторизации в админке битрикс в запросе POST передаются специфические поля в духе
TYPE: AUTH
AUTH_FORM: Y


Если в этом коде нужно "перезапустить js" путем обновления страницы, сделай на php, через использование битровых методов из $APPLICATION, редирект на эту же страницу.

Например, после global $APPLICATION; добавь следующий код:
if (
	$_SERVER['REQUEST_METHOD'] === 'POST' 
	&& isset($_REQUEST['TYPE']) && $_REQUEST['TYPE'] === 'AUTH' 
	&& isset($_REQUEST['AUTH_FORM']) && $_REQUEST['AUTH_FORM'] === 'Y'
) {
	LocalRedirect($APPLICATION->GetCurPage());
	exit;
}


Если нужно перезагрузить страницу, то это можно сделать так. Ну либо сделай на js, если он в момент загрузке каким-то образом будет работать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы