我有一个服务,可以获取当前已登录的用户,但在开发环境中只能有时起作用。
问题似乎是每当我更改Twig模板并刷新后,就会出现以下错误:
Error: Call to a member function getUser() on null
如果我刷新页面,一切都按预期工作,直到我再次更新Twig模板。显然,这使得开发非常缓慢,因为我不断地刷新页面。
我已经采取了以下步骤:
- 清除了开发环境缓存。
- 清除了浏览器缓存。
- 确认用户已经登录(否则第二次刷新就不起作用)。
是否有人有任何想法是什么导致了这个问题?
services.yml
myservice:
class: AppBundle\Services\MyService
arguments: ["@doctrine.orm.entity_manager", "@security.token_storage"]
MyService.php
<?php
namespace AppBundle\Services;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class MyService
{
private $em;
private $token;
public function __construct($entityManager, TokenStorageInterface $tokenStorage)
{
$this->em = $entityManager;
$this->token = $tokenStorage->getToken();
}
public function doSomething()
{
$user_id = $this->token->getUser()->getID();
return;
}
}
Twig模板
{{ myservice.doSomething }}
注意:这是仍然导致问题的基本代码