【问题标题】:Automatic spaceless for twig templates树枝模板的自动无空间
【发布时间】:2019-11-25 08:23:43
【问题描述】:

我有一个使用带有大量 html 模板的 twig 的项目。不幸的是,没有加载这些模板的“主”模板。所以每个树枝模板都是独立的。

是否可以以这种方式配置 twig,以便将 %spaceless% 函数应用于每个输出? https://twig.symfony.com/doc/2.x/filters/spaceless.html

{% apply spaceless %}
    <div>
        <strong>foo</strong>
    </div>
{% endapply %}

当然 - 可以将这些设置到每个树枝模板中,但这是一个非常愚蠢的想法,因为对于每个新模板,您都必须“记住”。

我的想法是将其直接(可能是扩展)实现到 twig 中,但我只是没有找到正确的方法来执行此操作?或者是否有默认启用此功能的树枝选项?

【问题讨论】:

  • 无论是否有可能,您都在使用错误的工具来解决问题,IMO。如果您尝试保存字节以供传输,只需gzip 服务器上的输出即可。
  • 可能最有效的解决方案是让内核响应侦听器查看响应是否为内容类型 html/text(或其他),并使用可能存在整体问题的正则表达式相应地编辑正文,删除每个&gt;&lt; 之间的空格。 (正如 twig 文档指出的那样,它使 pre/textarea 的东西变得困难)
  • @Jakumi 你读错了文档。它指出删除 inside html 标记中的空格很困难,但这不是 spaceless 所做的
  • @yivi:gzip 已经在使用,但我们也想使用无空间功能。
  • @DarkBee 没有看错特别是,我只是说删除&gt;&lt; 之间(在html标签)有它的问题。最好复制无空格代码正在使用的正则表达式。不过也懒得找了。 @Marco:顺便说一句,你想达到什么目的,因为它开始听起来像是一个 A-B 问题。

标签: php symfony twig


【解决方案1】:

实际上有很多选项可以解决这个问题。我想他们中的大多数已经在这里介绍了:

symfony every block with spaceless

您总是会在这些括号内覆盖您的代码。

但是实际上是什么阻止了您从基本模板扩展每个模板并用{% spaceless %} 标签包围其内容块? 这将是干净的,因为每当您决定创建没有空间属性的模板时,您都可以使用通常的块。

您还可以对所有模板进行“全部替换”,并用我们自己的新标签替换“块”。

如果你真的不想要一个新的标签/节点/东西,你也可以编写一个新的令牌解析器来查找通常的块,如果你真的不想“记住”,则在那里应用 spaceless 函数" 使用{% spaceless %}

【讨论】:

  • 您还可以创建一个新模板 loader 来神奇地添加无空格的块,具体取决于它是否扩展到块或整个模板......这么多选项(我相信他们都不是很好)
猜你喜欢
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2016-06-09
相关资源
最近更新 更多