Symfony 3 - не может использовать сеанс, чтобы получить пользователя - PullRequest
0 голосов
/ 02 мая 2019

У меня есть объект User в моем проекте. При каждой загрузке страницы я пытаюсь восстановить пользователя с помощью запроса в базе данных.

Моя цель - поместить его в переменную сеанса сразу после входа в систему, чтобы просто вернуть его, когда я захочу.

В моем коде, если я проверю это:

$user = $this->checkBDD($mail,$fredurne,$nomComplet);
        dump($user);

        $this->session->set('user',$user);

        $user = $this->session->get('user');
        dump($user);

У меня есть:

enter image description here

Итак, сессия, кажется, работает.

Теперь я положил это в приложение. Я создаю функцию:

$user = $this->getUtilisateur($mail,$fredurne,$nomComplet);
dump($user);

С

public function getUtilisateur($mail,$fredurne,$nomComplet)
    {
        if(!$this->session->has('user'))
        {
            dump("user not in session");
            $user = $this->checkBDD($mail,$fredurne,$nomComplet);
            $this->session->set('user',$user);
        }

        else
        {
            dump("user in session");
            $user = $this->session->get('user');
        }

        return $user;
    }

А у меня есть:

enter image description here

Итак, я не понимаю, в чем проблема

1 Ответ

0 голосов
/ 02 мая 2019

Проблема:
Сущность доктрины сохраняется в сеансе, но ее необходимо обновить
Но когда вы извлекаете сущность из сеанса: единица работы доктрины не знает, что она должна обрабатывать эту сущность

После этого у вас должны возникнуть проблемы с отложенной загрузкой Doctrine.

Сеанс не подходит для хранения сущности.

Лучшее решение:

  • Внедрить менеджер сущностей Doctrine в ваш сервис
  • Хранить идентификатор только в сеансе
  • В методе getUtilisateur получить пользователя с идентификатором, если это еще не сделано
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...