使用symfony从数据库中加载活动用户列表,而无需使用控制器

问题描述

我正在导航栏上创建一个presonification菜单,以便可以从任何我不想使用控制器内部的getRepository并传递到前端的页面进行访问。

在symfony 4上是否可以从数据库获取所有用户并将其调用在前面?例如app.session.user(以获取有关已登录用户的信息)?

谢谢!

解决方法

正如Cerad所说,您可以在模板中嵌入一个Controller:https://symfony.com/doc/current/templates.html#embedding-controllers

不用做{% include 'base/navbar.html.twig' %},而是要做

在您的模板中:

{{ render(controller('App\\Controller\\BaseController::renderNavbar')) }}

在BaseController中

public function renderNavbar(UserRepository $userRepository) {
    return $this->render('base/navbar.html.twig',[
        'activeUsers' => $userRepository->findActiveUsers(),]);
}

这不是路由,它只是呈现html的函数,因此您无需添加注释。