【问题标题】:Retrieve variable name in Twig在 Twig 中检索变量名
【发布时间】:2014-07-09 15:58:52
【问题描述】:

我正在使用 Twig 模板引擎,我想创建一个过滤器

{{ my_variable|default_variable }}

当变量为空时返回变量的名称(在本例中为字符串“my_variable”)。这可能吗?如何检索变量的名称而不是其值?

【问题讨论】:

  • 您希望能够获取传递给过滤器的变量名而不仅仅是值?
  • 主要问题是。为什么?那我也许可以帮助你。因为我认为向用户显示变量名称不是一个好方法。
  • @imsiso angular 使用类似的约定来处理变量。我想要一种打印要由 angular 处理的变量名称的方法。
  • @Eyal 你可以使用variuable_name 来代替`{{variable_name}},你将把variable_name 打印成类似这样的文本:'Hello world!'。但是我认为它的安全湖可以在浏览器中显示您的后端变量。所以如果你给我一个你的问题的例子,那么我们也许能找到一个好的答案。
  • @Eyal 也许将您的问题作为问题发布会有所帮助。然后你也可以把你的问题的链接放在这里。 (你可以把你到目前为止所做的代码写下来,这样人们可以帮助你更多)

标签: php twig template-engine


【解决方案1】:

我不知道这是否可能,您可以将要用作参数的名称传递给过滤器

{{ my_variable|default_variable('my_variable') }}

然后你的过滤器:

$filter = new Twig_SimpleFilter('default_variable', function ($value, $defaultName) {
    return (String)$value?:$defaultName;
});

这将返回变量值的字符串版本,如果不能返回默认名称。

【讨论】:

  • 这只是“默认”过滤器的行为。我想避免'my_variable'的重复
  • 哈哈,我没想过,但我想是的。是的,对不起,我不知道有什么办法。
  • 这个答案是唯一的可能性。变量本身被提供给函数,并且在 twig 模板中不包含有关其名称的信息
  • 但是,嘿。为什么?我的意思是你为什么要向用户显示变量名?告诉我背后的想法是什么,那么我可能会提出一个更好的想法
猜你喜欢
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多