【问题标题】:Twig Variable Variables for a method方法的 Twig 变量变量
【发布时间】:2015-03-26 16:23:43
【问题描述】:

我正在尝试做一些在 PHP 中非常容易,但在 Twig 中却不那么容易的事情。

基本上,我需要调用一个类方法,但我需要能够定义通过字符串调用的方法。

我有 3 种方法:getControlvsgetControlncgetControltr。但是,为了调用这些方法,我需要一个单独的变量来确定调用哪个方法。

这就是我现在尝试调用的:

{% set neutPer = key.getControl~neutFaction %}

其中neutFaction 可以是“vs”、“nc”或“tr”。

这似乎只是触发 key.getControl 然后就是这样,连接丢失了。

有什么想法吗?

提前致谢!

【问题讨论】:

  • 检查attribute函数
  • @Matteo 我已经在我的研究中看到了这一点,但我不清楚如何实际使用它。当没有关于如何使用它的示例时无济于事:S
  • 当然,我试着给你举个例子
  • @Matteo 我想我已经明白了:{% set neutPer = attribute(key, neutKey) %}
  • 是的,也是。取决于您如何构建方法名称的字符串

标签: php symfony twig


【解决方案1】:

您可以使用attribute twig function:

首先将字符串连接为:

{% set method = "getControl" ~ neutFaction %}

然后调用为

{{ attribute(key, method) }}

您也可以将参数传递为:

{{ attribute(key, method, arguments) }}

另外,定义的测试可以检查是否存在动态属性:

{{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }}

【讨论】:

  • 对于那些寻找我得到的最终代码的人,这里是正确的代码:{% set neutFaction = 'vs' %} {% set neutKey = 'getControl'~neutFaction %} {% set neutPer = attribute(key, neutKey) %}
【解决方案2】:

试试{% set neutPer = (key.getControl~neutFaction) %} 或者您可以在将变量传递给 twig 的控制器/服务中对此进行更改,这样您就不需要设置串联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2013-01-07
    • 2017-09-23
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多