4

Symfony 2 中是否有诸如partials 之类的东西,可以从任何地方有效地重用模板?

我找到了include http://twig.sensiolabs.org/doc/tags/include.html但这仅允许在特定目录结构中呈现模板。

我真正想要一个包含我所有部分模板的文件夹,而不是将它们集中到我的主视图中?

所以我希望能够做类似的事情

{% include "Bundle:Default:Partials:view.html.twig" %}

更新

我不想使用结构的强制Bundle:Controller:Template结构。我不想使用它,因为这意味着将我所有的模板部分放在我的主视图模板中。我需要一些能让我做的事情Bundle:Controller:PartialDir:Template

4

4 回答 4

10

你已经可以这样做了。symfony2 文档有一节描述了如何做到这一点。

http://symfony.com/doc/current/book/templating.html#include-other-templates

于 2012-12-30T04:50:20.463 回答
2

在 Symfony 2.4(我目前使用的版本,但它可能也适用于其他 2.x 版本)中,您可以执行以下操作:

{% include '::_partials/partial.html.twig' %}

或者在 Symfony 2.2+ 中使用 include 函数

{{ include('::_partials/partial.html.twig') }}

这将在 app/Resources/views/_partials 目录中查找 partial.html.twig 模板。显然,您可以随意命名 _partials 目录。它也可以在没有 '::' 前缀的情况下工作。

于 2014-01-17T00:54:30.307 回答
0

我知道这是旧的,但实现 OP 要求的方法如下:
我们不必这样做
bundle:controler:partialDir:template
,而是稍微切换它来实现:
{% include 'Bundle:PartialDir/Controller:Template' %}

于 2014-12-16T11:14:57.920 回答
0

要包含控制器,您需要使用控制器的标准字符串语法(即 bundle:controller:action)来引用它:

{{ render(controller(
    'App\\Controller\\ArticleController::recentArticles',
    { 'max': 3 }
)) }}
于 2018-10-01T13:43:45.160 回答