【问题标题】:symfony2 twig and multiple levels of subfolderssymfony2 twig 和多级子文件夹
【发布时间】:2012-10-03 01:13:30
【问题描述】:

我发现包含带有此路径的模板效果很好

{% include 'AcmeDemoBundle:TemplateArchive:view.html.twig' with {'data': c.data} %}

虽然这似乎是不允许的:

{% include 'AcmeDemoBundle:TemplateArchive:6:view.html.twig' with {'data': c.data} %}

换句话说,我正在尝试访问已分类到我的 bundle/resources/views/ 文件夹中的子文件夹结构中的模板。

如果从我的第一行开始,我不允许比常规的单级包含更深入,是否有另一种/更好的方式来构建这些模板文件?

(文件夹名称 '6' 代表我想要包含的数据库中的模板 ID,它需要是动态的并且在文件夹中很好地排序......)。

我尝试将模板文件夹命名为“t6”,但没有区别,“没有前导字母的数字”不是这里的问题...

【问题讨论】:

    标签: php symfony twig


    【解决方案1】:

    怎么样

    {% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}
    

    【讨论】:

      【解决方案2】:

      两者都在工作:

      AcmeDemoBundle:TemplateArchive:6/view.html.twig
      AcmeDemoBundle:TemplateArchive/6:view.html.twig
      

      【讨论】:

      • 因为 Bundle:Subdir:filename.html.twig 是 Symfony 所期望的(参见 Symfony Cookbook)我会选择 AcmeDemoBundle:TemplateArchive/6:view.html.twig
      【解决方案3】:

      从 Symfony 2.2 开始,您还可以使用 Namespaced paths

      {% include '@AcmeDemo/TemplateArchive/6/bar.html.twig' with {'data': c.data} %}
      

      您甚至可以定义自己的命名空间:

      # app/config/config.yml
      twig:
          # ...
          paths:
              "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/views/TemplateArchive": TemplateArchive
      

      然后像这样使用它:

      {% include '@TemplateArchive/6/view.html.twig' with {'data': c.data} %}
      

      这也适用于控制器(也可以使用自定义命名空间):

      // TemplateArchiveController.php
      return $this->render('@TemplateArchive/6/view.html.twig', ['data' => $c.getData()]);
      

      来自 [Symfony Cookbook: Namespaced paths]:

      另外,命名空间语法更快。

      【讨论】:

      • 不错的补充。谢谢
      • 如果你有包含很多视图的包,那会更好,而且你可以在你的包配置中粘贴路径
      • @DarkMukke 如何在捆绑配置中添加路径?我一直在努力解决这个问题。
      • @DavidStone 与上面描述的方式相同,但不是在 app/config 中执行,而是在 Bundle/Resources/config 中执行
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多