Невозможно получить данные сеанса в других контроллерах - PullRequest
0 голосов
/ 24 декабря 2018

Я использую Symfony 3.4.Я могу установить и получить данные сеанса в одном контроллере.Но получение тех же данных сеанса в других контроллерах вызывает исключение: «Вызов функции-члена get () в null».

Ниже приведен код, который я использую:

   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"

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Почему вы не передали SessionInterface в своем действии?Например:

public function showAction(SessionInterface $session)
{
    $session->set('user_id', 1);
}

, поэтому в вашем контроллере 2 вы можете получить user_id следующим образом:

public function showAction(SessionInterface $session)
{
    $session->get('user_id'); // You can test $session->has('user_id')
}

Если вы хотите создать конкретную сессию, создайте класс пользователя (или другой) сстатический метод getInstance и приватный конструктор.В тесте метода create, если сессия существует, если true, верните сессию, иначе вызовите конструктор.Вот пример:

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');
}

Я надеюсь, что это поможет вам.

0 голосов
/ 24 декабря 2018

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');

Исключение: "Вызов функции-члена get () в null" Поскольку вы не определили $this->session на контроллере 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...