使用 $session->getId() 获取会话 ID 在 Symfony2 中返回空结果

问题描述 投票:0回答:2

我想获取会话ID并将其存储在数据库中(因为我将购物车存储在数据库中)。因此,我想用这个方法获取会话ID:

$session = $this->get('session');
$carts->setSessionId($session->getId());

但是这个方法返回一个空结果。这真的很奇怪,因为如果我在我的视图中发送此 ID,例如:

'session' => $session->getId(),

它有效……这真的很奇怪;我的代码有错误吗?

getSessionId() 和 setSessionId() 函数:

/**
 * Set sessionId
 *
 * @param string $sessionId
 * @return Carts
 */
public function setSessionId($sessionId)
{
    $this->sessionId = $sessionId;

    return $this;
}

/**
 * Get sessionId
 *
 * @return string 
 */
public function getSessionId()
{
    return $this->sessionId;
}

提前谢谢您!

symfony shopping-cart sessionid string
2个回答
6
投票

请确保您的会话已启动,否则 Session::getId() 返回 am 空字符串 ('')。 请参阅 Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage

$session = $this->get('session');
$session->start();
$carts->setSessionId( $session->getId() );

0
投票

如果会话尚未启动,getId() 方法将返回空字符串。手动启动会话时,不要忘记检查会话是否尚未启动。

if(!$session->isStarted()) {
    $session->start();
}
© www.soinside.com 2019 - 2024. All rights reserved.