【问题标题】:Template Partials in Symfony 2Symfony 2 中的模板部分
【发布时间】:2012-12-14 19:53:24
【问题描述】:

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

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

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

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

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

更新

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

【问题讨论】:

    标签: templates symfony twig partials


    【解决方案1】:

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

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

    【讨论】:

    • 这也可能有用(如default('index') ~ '_foo.html' 部分):twig.sensiolabs.org/doc/recipes.html#making-an-include-dynamic
    • @suihock 这不是我要找的。您的解决方案仍然强制执行 Bundle:Controller:Template 结构。我不想使用它,因为这意味着将我的所有模板部分放入我的主视图模板中。我需要一些可以让我做的事情 Bundle:Controller:PartialDir:Template
    • @jakenoble 你试过 Bundle:Controller:Somedir/anotherdir/template.html.twig 吗?
    • @jakenoble 你可以尝试调试 Symfony\Bundle\TwigBundle\Loader\ FilesystemLoader 看看为什么它没有找到它。我知道这种其他格式 Bundle:Controller/Somedir:template.html.twig 可以工作,因此您可以尝试一下。只是 Controller/Somedir 格式的语义不同,因为它引用的是 Bundle\Controller\Somedir 命名空间中的控制器模板。
    • 旧 - 旧答案 - 但链接是永恒的!
    【解决方案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 目录。它也可以在没有 '::' 前缀的情况下工作。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        {{ render(controller(
            'App\\Controller\\ArticleController::recentArticles',
            { 'max': 3 }
        )) }}
        

        【讨论】:

          猜你喜欢
          • 2011-07-26
          • 1970-01-01
          • 1970-01-01
          • 2011-04-21
          • 2012-05-02
          • 1970-01-01
          • 2012-10-07
          • 2013-02-17
          • 2014-07-27
          相关资源
          最近更新 更多