@nnkrasovok

Как правильно перезагрузить страницу, если пользователь удален?

есть функция удаления пользователя

public function delete(Request $request)
    {
        $params = $request->request->all();
        foreach ($params as $param){
            $item = $this->getDoctrine()->getManager();
            $user = $item->getRepository(User::class)->find($param);
            $item->remove($user);
            $item->flush();
        }
        return $this->redirect('main');
    }


все работает, но если пользователь удаляет сам себя, то кидает ошибку
You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine.

потом нажимаешь f5 и происходит редирект. то есть со второго раза
как тогда правильно сделать редирект?
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@sl0
В симфони данные юзера записываются в сессию и при любом изменении данных валидируются. Соответственно при удалении пользователя самим собой теряется валидатор и вываливается эта ошибка. Самый простой способ будет принять в public function delete
еще и SessionInterface $session, а потом очистить сессию:
$this->get('security.token_storage')->setToken(null);
$session->invalidate();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы