Symfony网站在导航中具有动态内容(从数据库加载)


Symfony website with dynamic content (loaded from the database) in the navigation

我正在处理的网站有一个名为类别的导航菜单项,这是一个包含数据库中一些条目的下拉列表(用户可以从管理面板调整类别。导航位于一个base.html.twig文件中,该文件由所有其他 twig 文件扩展。

问题:获得这些条目的最佳方式是什么?我想到的唯一方法是使用对{{ render(controller(...)) }}的调用,这将创建一个新请求,在我看来这有点矫枉过正,并且通常会减慢页面的速度。有没有更好的方法?也许在每个请求上调用并能够将数据传输到视图文件的事件?

您有两个不错的选择来实现这一点:

  1. 在你的 twig 模板中使用 render() 从控制器调用一个特定的方法(正如你在消息中所说的那样)
  2. 创建一个树枝扩展来呈现你的菜单,这很简单:http://symfony.com/doc/current/cookbook/templating/twig_extension.html

在我看来,您应该使用第一个选项(控制器),因为您只需要渲染菜单 1 次。Twig 扩展更好地设计为在多个模板中重复使用。

关于您的性能问题,请不要担心,您所需要的只是缓存您的菜单,因为它不会经常更改,并且在后台更新菜单时使缓存无效。

问候