Если на сайте используется многоязычность, а стало быть все ссылки
содержат /ru/ (или /en/, /de/), и сессия хранится в куке session_ru. То
следующий код не будет работать, как то ожидается:
$oSession = AMI::getSingleton('env/session'))
if(!$oSession->isStarted()){ $res = $oSession->start(); }
$session_id = $oSession->getId();
Мы обратились с вопросом в СТП Amiro.CMS
Как это исправить?И нам предложили следующее решение: необходимо передавать локализацию в запросе к самому скрипту (актуально, если вышеуказанный код используется в файле, который подключается как самостоятельный JS скрипт) и использовать следующий код (скрипт ожидает параметр locale в HTTP-запросе):
<?php
require 'ami_env.php';
/**
* @var AMI_RequestHTTP
*/
$oRequest = AMI::getSingleton('env/request');
$locale = $oRequest->get('locale', 'en');
/**
* @var AMI_Session
*/
$oSession = AMI::getSingleton('env/session', array('locale' => $locale));
if(!$oSession->isStarted()){
$oSession->start();
} $session_id = $oSession->getId(); ?>
Внимание! Требуется отдельная проверка включена ли многоязычность, т.к. при выключенной многоязычности второй вариант работать не будет. Но об этом в другой раз.
|