![](/img/trans.png)
[英]Laravel 4.2 session::get() method not returning session data in controllers
[英]Unable to get session data in other Controllers
我正在使用symfony 3.4。 我可以在同一控制器內設置和獲取會話數據。 但是在其他控制器中獲取相同的會話數據會引發異常:“在null上調用成員函數get()”。
以下是我正在使用的代碼:
Controller1.php(Working)
$this->session = new Session();
$this->session->start();
/*** Set Session Data ***/
$this->session->set('userid', $dbres [0]['user_id']);
/*** Get Session Data ***/
$user_id = $this->session->get('userid');
Controller2.php(Not Working)
/*** Get Session Data ***/
$user_id = $this->session->get('userid');
Exception : "Call to a member function get() on null"
Controller1.php(工作)
$this->session = new Session();
$this->session->start();
/*** Set Session Data ***/
$this->session->set('userid', $dbres [0]['user_id']);
/*** Get Session Data ***/
$user_id = $this->session->get('userid');
Controller2.php(不工作)
/*** Get Session Data ***/
$this->session = new Session();
$this->session->start();
$user_id = $this->session->get('userid');
異常:“在null上調用成員函數get()”,因為尚未在控制器2上定義
$this->session
您為什么不通過SessionInterface進行操作? 像這樣:
public function showAction(SessionInterface $session)
{
$session->set('user_id', 1);
}
因此,在Controller 2中,您可以這樣獲得user_id:
public function showAction(SessionInterface $session)
{
$session->get('user_id'); // You can test $session->has('user_id')
}
如果要創建特定的會話,請使用靜態方法getInstance和private構造函數創建User(或其他)類。 在create方法中,如果返回true,則測試session是否存在,否則調用構造函數。 這里是一個例子:
public static function getInstance($new = false)
{
if(is_null(self::$_session)) {
self::$_session = new Session();
self::$_session->start();
}
if($new)
{
self::$_session->set('user_instance', new self(self::$_session));
return self::$_session->get('user_instance');
}
if(!self::$_session->has('user_instance')) {
self::$_session->set('user_instance', new self(self::$_session));
}
return self::$_session->get('user_instance');
}
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.