Что исправить (в чем может быть ошибка) что бы записать данные в куки через API Битрикс?

Есть код который добавляет в избранное.
Если пользователь авторизован то в пользователю записываем данные, если не авторизован то в куки.
Что то не пойму что не так с куками, не пишет.
global $APPLICATION;
use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Security\Sign\Signer;
use Bitrix\Main\UI\Extension;
use Bitrix\Main\Web\Json;
use Bitrix\Main\Application;
use Bitrix\Main\Web\Cookie;



$GLOBALS['APPLICATION']->RestartBuffer();
/* Избранное */

if($_GET['id'])
{
    if(!$USER->IsAuthorized()) // Для неавторизованного
    {
        $arElements = unserialize($APPLICATION->get_cookie('favorites'));

        if(!in_array($_GET['id'], $arElements))
        {
            $arElements[] = $_GET['id'];
            $result = 1; // Датчик. Добавляем
        }
        else {
            $key = array_search($_GET['id'], $arElements); // Находим элемент, который нужно удалить из избранного
            unset($arElements[$key]);
            $result = 2; // Датчик. Удаляем
        }

        $cookie = new Cookie("favorites", serialize($arElements), time() + 60*60*24*60, '', 'sitename');
        $cookie->setDomain($context->getServer()->getHttpHost());
        $cookie->setHttpOnly(false);
        $cookie->setSecure(false);
        $context->getResponse()->addCookie($cookie);
        $context->getResponse()->flush("");


    }
    else { // Для авторизованного
        $idUser = $USER->GetID();
        $rsUser = CUser::GetByID($idUser);
        $arUser = $rsUser->Fetch();
        $arElements = $arUser['UF_FAVORITES'];  // Достаём избранное пользователя
        if(!in_array($_GET['id'], $arElements)) // Если еще нету этой позиции в избранном
        {
            $arElements[] = $_GET['id'];
            $result = 1;
        }
        else {
            $key = array_search($_GET['id'], $arElements); // Находим элемент, который нужно удалить из избранного
            unset($arElements[$key]);
            $result = 2;
        }
        $USER->Update($idUser, Array("UF_FAVORITES" => $arElements)); // Добавляем элемент в избранное
    }
}
/* Избранное */
echo json_encode($result);
die();


что я делаю не так?
  • Вопрос задан
  • 1200 просмотров
Решения вопроса 1
babarun
@babarun Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
\Bitrix\Main\Context::getCurrent()->getResponse()->writeHeaders();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
New_Horizons
@New_Horizons
Бред:
Отвечая на вопрос заголовка: setcookie
Портянку читать лень)
Ответ написан
@Ashot08
$context->getResponse()->flush(""); - в аргумент метода flush() нужно передать $result
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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