【发布时间】:2019-06-16 01:36:55
【问题描述】:
我想显示一个活跃用户列表。我在我的项目中使用 FOSUserBundle。我在我的用户表上创建了一个包含上次用户活动日期和时间的字段,并创建了一个侦听器:
class ActivityListener
{
protected $tokenStorage;
protected $userManager;
public function __construct(TokenStorage $tokenStorage, UserManagerInterface $userManager)
{
$this->tokenStorage = $tokenStorage;
$this->userManager = $userManager;
}
/**
* Update the user "lastActivity" on each request
* @param FilterControllerEvent $event
*/
public function onCoreController(FilterControllerEvent $event)
{
// Check that the current request is a "MASTER_REQUEST"
// Ignore any sub-request
if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) {
return;
}
// Check token authentication availability
if ($this->tokenStorage->getToken()) {
$user = $this->tokenStorage->getToken()->getUser();
if ( ($user instanceof UserInterface) && !($user->isActiveNow()) ) {
$user->setLastActivityAt(new \DateTime());
$this->userManager->updateUser($user);
}
}
}
}
在我的控制器上:
class UserController extends Controller
{
/*
* @Template()
*/
public function whoIsOnlineAction()
{
$users = $this->getDoctrine()->getManager()->getRepository('App:User')->getActive();
return array('users' => $users);
}
}
在我的模板上,我添加了这一行:
{{ render(controller('App\\Controller\\UserController:whoIsOnlineAction')) }}
但是当我尝试登录一个简单的用户时,我得到了这个错误: 在渲染模板期间引发了异常(“控制器必须返回一个“Symfony\Component\HttpFoundation\Response”对象,但它返回了一个数组([users => ...])。”)。
【问题讨论】:
标签: php symfony twig fosuserbundle symfony4