问题标签 [twig-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
483 浏览

symfony - 在扩展 -> 包含模板中渲染块

问题

navbar.html.twig我有一个看起来像这样的块:

这个导航栏是include我的base.html.twig

然后我的页面模板extend是基础。

但是我在导航栏中想要的东西并没有出现在导航栏中,因为它是include由基地组成的,所以那里没有父/子关系。

问题

让我在扩展模板中覆盖包含模板中的块的好(或任何)方法是什么?

0 投票
0 回答
383 浏览

php - 我究竟如何使用 Assetic 的 Twig 扩展?

我(试图)将 Assetic 与 Twig 和 Slim 一起使用(所以,没有 Symfony)。我想我已经弄清楚了创建的基础知识AssetCollection,但我不太清楚如何在我的模板中链接这个集合。

如果我做类似的事情echo $app->css->dump();,它会正确打印出我所有的 CSS。太好了,但是我如何将它连接到 Twig 中?

项目自述文件中给出的示例给我留下了比我开始时更多的问题:

到底是/path/to/sass/main.sass什么?我以为我是通过$factory->createAsset. 文档接着说:

css/src/*.sass当扩展处于调试模式时,这个相同的标签将呈现多个链接元素,一个用于glob引用的每个资产...

css/src/*.sass我在自述文件中的其他任何地方都看不到任何内容。他们在说什么?

最后,我在 README 的底部看到了这个:

在我看来,这就像我会在构建步骤中运行一次(“循环遍历我的所有模板”)。但是,我认为 Assetic 也将支持资产的按需过滤(和缓存)。我显然不想在每个请求上循环遍历我的所有模板。writeManagerAssetsTwig扩展程序不应该自动触发相关调用吗?

任何帮助将不胜感激。

0 投票
0 回答
136 浏览

php - symfony2. hot to use transchoice with expression

试图在 symfony 中做类似的事情

ofc 这只是一个例子 - 想一想,我如何将表达式放入 transchoice?

0 投票
1 回答
9923 浏览

php - 树枝:url_decode

我用树枝过滤器 url_encode 编码了一个 url 参数。

哪个在 url 中输出

所以在请求的页面中带有url参数

显示 01%2F04%2F2016 但我想要 01/04/2016

我尝试使用原始过滤器,还做了一个树枝扩展:

但即使这样,它仍然显示 01%2F04%2F2016

我在我的控制器方法中得到了相同的结果:

这样做的正确方法是什么?

更新 :

日期来自“文本”类型的输入。不,这是一个带有数字和 / 的简单字符串。

0 投票
1 回答
232 浏览

symfony - 生成器中不提供 Twig 过滤器

当我调用我的自定义过滤器时,它会失败:

服务已注册:

它列在下面container:debug

该类如下所示:

twig:debug列出我的snake_case过滤器。

twig 文件由 symfony 命令调用的 Generator 渲染。

这里是过滤器的调用

0 投票
1 回答
125 浏览

php - Symfony Twig Extension 破坏了其他服务 - 模板是在安全之前完成的吗?

我正在开发一个 Symfony 2.7 WebApp。我创建的其中一个捆绑包包括一项服务,该服务提供一些与用户相关的内容,例如userHasPurchases().

问题是,包括Twig Extesion中断另一个服务:

应用商店服务

AppShopBundle\Resources\config\services.yml

到目前为止一切正常:AppShopServices使用当前用户创建userHasPurchases()并按预期工作。

现在我添加了一个Twig 扩展,以便能够userHasPurchases()在我的模板中使用:

树枝扩展

在 AppShopBundle\Resources\config\services.yml 中包含扩展

包含 ,之后Twig ExtensionAppShopService它的方法userHasPurchases不再起作用。问题是, 的构造函数AppShopService不再设置user,因为$tokenStorage->getToken()现在返回null

这怎么可能?除了包括Twig Extension. 一旦我Twig Extensionservices.yml所有东西中删除它,它就会再次正常工作。

我唯一的猜测是,它的创建Twig Extension是在任何安全性之前完成的。但为什么?

知道这里可能有什么问题吗?

0 投票
1 回答
129 浏览

php - Twig 扩展似乎导致尝试加载不存在的缓存文件

我有一个基于 silex 的站点的树枝扩展:

在应用程序文件中注册如下:

这似乎是正确的——在扩展类名称中引入拼写错误会导致与我所坚持的不同的异常。

我在我的树枝模板中用 调用这个扩展{{ maybeDecodeJapanese() }},这会导致这个异常(它似乎不是由模板调用本身引起的,拼错它会生成一个标准函数未找到异常):

这发生在 /silex/vendor/twig/twig/lib/Twig/Environment.php

我最好的猜测是这是某种缓存文件。在开发环境中禁用了缓存,但我已经尝试删除缓存文件夹内容,但没有帮助。谷歌搜索尚未提供任何其他线索。

任何找到问题根源的帮助都会非常有帮助。

0 投票
1 回答
1112 浏览

php - Twig Extension 不适用于 Symfony 2

我创建了一个 Twig 扩展以显示不同货币格式的金额,例如:印度、美元等。

我按照 Symfony2 指南的建议进行如下操作。

NameSpace/AccountBundle/Extension/AccountExtension.php

注册在app/config/services.yml

当我在树枝文件中使用它时: {{ 50000 | get_money_indian_format }}

我收到以下错误:过滤器get_money_indian_format不存在EduAccountBundle:Ledger:showLedgers.html.twig

0 投票
1 回答
392 浏览

php - Symfony2 和 Twig:如何以及在何处插入 PHP 函数以在 TWIG 中使用?

我需要在模板 TWIG 中调用 PHP 函数。我如何以及在何处插入该功能?这是我的例子:我的控制器是:

我的树枝模板是:

但我收到此错误消息:

尝试从命名空间“BackendBundle\Controller”加载类“Twig_Environment”。您是否忘记了另一个名称空间的“使用”语句?

什么不见​​了?

0 投票
0 回答
319 浏览

symfony - 无法使用沙盒安全策略在树枝模板中呈现使用 trans 过滤的文本

我有点困惑。首先,看看我的代码,我猜。

这是我要渲染的模板

在这里,如您所见,我想根据模板的类型来渲染模板。问题是:一半的模板渲染得很好,然后,当它尝试渲染翻译后的字符串时,它会抛出一个错误。

我在尝试调用渲染方法之前检查了这个函数是否存在,它确实是未定义的。基本上,我在这里有两个问题:

问题 1 它在我的项目的其他部分是如何工作的,但在这个特定的处理程序中却不是?请参阅下面的“重要更新”。

问题 2 我可以通过其他方式解决我的问题吗?例如,不使用沙盒或使用带有某种标志“everythingAllowed=true”的沙盒?

注意力!重要更新 以前,我误解了自己的问题。我以为是在渲染变量时抛出了错误,但我重新检查了情况(当 Alain Tiemblo 在评论中询问我这里的树枝模板代码时),现在 100% 确定它是在尝试翻译时抛出的。另外,我的项目中到处都有翻译,而且效果很好,但在这种特定情况下却不是。我认为值得一提的是,我还尝试在不使用沙盒的情况下渲染模板。我试图像这样直接从 Twig Engine 渲染它

结果 - 没有正确翻译文本。当我转储“语言环境”时 - 我得到了一种特定的语言,但文本被翻译成另一种语言。但至少使用这种方法 - 我没有收到任何错误..有人可以为我澄清一下吗?因为我真的不明白 Intl/i18n 扩展是如何工作的,为什么它不想在 Sandbox 中工作或不在 Sanbox 中工作?

PS 我的猜测,为什么它不能直接从 Twig Engine 工作 - 可能我不应该像“@templating”那样注入或者它注入恰到好处,但是没有启用 Intl 或 I18n 扩展?如何启用。而且我不知道为什么它不适用于 Sandbox