问题标签 [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 回答
2819 浏览

symfony - 如何让 Twig 将 HTML 输出写入文件,而不是浏览器?

我有一个要渲染的 Twig 模板(.html 文件)(用我的 PHP 文件中的值替换标记)。但是,我不想将渲染结果发送到浏览器,而是将其写入新的 .html 文件。我想这个解决方案对于 Django 模板也是类似的。

我怎样才能在 PHP 中做到这一点?

0 投票
1 回答
203 浏览

symfony - 覆盖 Assetic\Extension\Twig\AsseticTokenParser::createNode 自 1.3 起已弃用。改写 AsseticTokenParser::createBodyNode

我尝试从所有已弃用的调用中清除我的应用程序(Symfony 2.7.4),但我在我的网站上找不到如何解决这个已弃用的调用。没有关于此特定已弃用调用的文档。显然,警告发生在供应商中,所以我不知道。

如果有人对如何解决这个已弃用的电话有任何想法,请发布您的解决方案。谢谢

0 投票
2 回答
604 浏览

twig - 在 Silex 微框架 (symfony-forms) 中使用 {{ form_widget(form) }} 创建表单时出现 Twig 语法错误

我正在玩 Silex 微框架。首先,我使用 composer 为 Twig 安装了 Twig 扩展:

我将此配置添加到我的前端控制器(index.php):

一切都可以按预期工作,但是在使用小部件创建表单时

我从 Twig 调试器收到此错误:

ExpressionParser.php 第 573 行中的 1/1 Twig_Error_Syntax:第 35 行的“post.twig”中的未知“form_widget”函数。

如果我注释掉这行代码:

在我的前端控制器中,一切正常,表单渲染没有问题。

这是树枝调试扩展的问题吗?也许有些不兼容?

我不需要使用 widget_form 在树枝中呈现我的表单。我只是将它用于快速测试目的,然后才能正确地在 twig 中编写渲染 - 但我仍然看不出 twig 会为此抛出错误的原因。

这是我的 composer.json

0 投票
1 回答
649 浏览

php - Twig include : 在传递的参数中使用翻译

这工作正常

但是如何让它发挥作用呢?使用翻译作为参数

snippet.html 内容为:

{{ 'solutions.description' | trans }}单独调用翻译会按预期显示内容。

它会是什么语法?

0 投票
1 回答
87 浏览

globals - 树枝扩展名全局

在 twig 扩展中的 1.12 版之前,可以像这样定义 getGlobals 方法:

为实现许多方法的扩展设置一个全局名称,并且可以使用 bar 和 baz 方法调用“foo” estension,如下所示:

考虑到 getGlobasl 方法现在已弃用并将在 Twig 2 中删除,不使用 getGlobals 怎么可能获得相同的效果?

0 投票
2 回答
10559 浏览

php - Passing an array to an include in twig

Seems like the argument is not passed properly ...

Then in the site/case-excerpt.html.twig file :

And in the site/testimonials/item.html.twig file:

The expected output would be the following :

I dropped the idea of looping manually trough items since it seems to be possible to have it done nicely, here for example.

0 投票
3 回答
842 浏览

twig - 将上下文 html 包裹在特定的树枝变量 {{ product.name }}

我想自动包装一些 html,比如说<span data-id="..">当我调用{{ product.name }}我的 twig 模板时。

因此,当我使用 twig 模板时{{ product.name }},我希望输出为:<span data-type="product" data-id="8" data-prop="name">My product name</span>. 我不能使用 twig 过滤器或宏,因为我确实需要模板语法{{ product.name }},所以最终用户(模板设计者)不必关心它。

我需要这个的原因是因为我正在为树枝模板构建一个页面编辑工具,所以我需要从 HTML 中了解这些变量的上下文。

我试图覆盖Compiler那些Twig_Environment使用,但我似乎无法改变树枝变量节点的输出。

我怎样才能做到这一点?

编辑

我想提一下,我需要这个来使用{{ product.name }}语法,因为其他设计师将在 Symfony 2 之外使用这些模板。我想让几乎所有的 twig 变量在前端都可以编辑,所以带有过滤器或宏的解决方案确实可以工作,但它扼杀了我正在编写的平台的可用性和可读性。目前 twig 中没有公共 API 可以实现我想要的,这就是我摆弄 twig 编译器的原因。我没有必要的 Twig 内部知识来实现​​这一点。如果有人能指出我的方向,那就太好了!

更新 2

我找到了一个可以实现我想要的地方。每个GetAttr节点都编译为$this->getAttribute($someContext, "property"). 所以如果我可以改变编译的树枝模板的子类,我就可以实现我想要的。默认情况下,所有树枝模板都从Twig_Template. 我想扩展这个方法

如何更改所有已编译树枝模板的子类?

更新 3 我找到了一种将我自己的基类用于所有已编译的树枝模板的方法。我可以简单地将其设置为 twig 环境中的一个选项,请参阅此链接。我希望明天让它工作,我会发布一个关于我如何一起解决它的正确答案。不确定我将如何处理转义,因为这将在$this->getAttribute()调用之后发生。

0 投票
2 回答
1131 浏览

php - 如何在 Twig 的 for 循环中使用图像?

我有数组中图像的地址,我想从该源加载 3 个图像

我的代码:

我应该在 img 标签的 Src 中写什么?

0 投票
1 回答
1285 浏览

php - Symfony Form form_rest 块无法识别

我正在将 FosUserBundle 用于应用程序。我正在覆盖 ( app/Resources/FOSUserbundle/views/Registration/register.html.twig) 内的注册模板。

register.html.twig

并包含一个 form_theme 文件,我在其中更改了 2 个块(与此问题无关)

register_theme.html.twig

问题是在 2.8 更新之前一切正常(我仍然认为这与此无关,但也许我什么也没看到)。

因此,当我尝试使用 form_rest 时,出现以下错误:

如果我不使用 form_rest,则缺少 csrf 令牌,我无法完成注册。如果我只使用 form_end 仍然会产生错误,因为 form_rest 包含在其中。

0 投票
1 回答
333 浏览

php - Twig 函数:如何返回自定义错误

我正在编写一个 Twig 函数,它创建一些从 1 到 5 的链接以及一个作为变量传递的参数,例如:

我知道我只能有criterium1,criterium2criterium3,所以我有一个数组,里面有它们,并且in_array()我检查通过的标准是否有效。

但是,如果标准不在固定数组中,我想返回一个错误并告诉开发人员哪些是允许的标准。

如何从 Twig 函数内部返回此类错误?

就像是:

您通过了标准“wrong_criterium”。只允许使用“criterium1”、“criterium2”和“criterium3”。