首页 > 解决方案 > Symfony4 在侧边栏中显示最新帖子

问题描述

我想在侧边栏中显示最后的 x 个帖子。

所以目前我的base.twig中有以下内容:

{% block sidebar %}
    {% for page in lastPages %}
        <a href="{{ path('page_show', {'slug': page.slug}) }}">{{ page.title }}</a> <br>
    {% endfor %}
{% endblock %}

在我的控制器中,我使用存储库来获取最后的帖子:

$lastPages = $pageRepository->getLastPages();

之后,我渲染视图

return $this->render('page/index.html.twig', ['lastPages' => $lastPages, .....]);

但现在我想在每个控制器中使用这个功能。

我可以创建一个AbstractController类似的方法

function getLatestPosts(PageRepository $pageRepository): array
{
    $pageRepository->getLastPages();
}

在此渲染视图之后:

return $this->render('page/index.html.twig', ['lastPages' => $this->getLatestPosts($repository), .....]);

但是,呃。

有没有像全局过滤器/功能这样的东西?我没有找到做这个的好方法。

标签: symfonysymfony4

解决方案


在您的模板中,您可以呈现负责侧边栏的控制器,如下所示:

{{ render(controller('App\\Default::renderSidebar')) }}

在这里阅读更多关于它的信息 https://symfony.com/doc/current/templating/embedding_controllers.html


推荐阅读