Symfony4在侧边栏中显示最新帖子

时间:2018-11-29 10:50:51

标签: symfony 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), .....]);

但是,嗯。

是否存在诸如全局过滤器/功能之类的东西?我没有找到一种好的方法。

1 个答案:

答案 0 :(得分:2)

在您的模板中,您可以像下面这样渲染负责侧边栏的控制器:

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

在此处详细了解 https://symfony.com/doc/current/templating/embedding_controllers.html